正则表达式 UBB 实例

<?php
header('Content-Type:text/html;charset:utf-8');

$str = "
[b]郭钱[/b]<br/>
[i]郭钱[/i]<br/>
[u]郭钱[/u]<br/>
[font=宋体]郭钱[/font]<br/>
[color=Red]郭钱[/color]<br/>
[size=6]郭钱[/size]<br/>
[align=left]郭钱[/align]<br/>
[align=center]郭钱[/align]<br/>
[align=right]郭钱[/align]<br/>
[url=http://www.baidu.com]郭钱[/url]<br/>
[url=www.baidu.com]www.baidu.com[/url]<br/>
[email=ybbqg@126.com]ybbqg@126.com[/email]<br/>
[img]http://dx/static/image/common/logo.png[/img]<br/>
";
echo $str;
echo "<br>";
echo con_ubb($str);

function con_ubb($str) {
    $pattern = array(
        "/\[b\](.+?)\[\/b\]/is",
        "/\[i\](.+?)\[\/i\]/is",
        "/\[u\](.+?)\[\/u\]/is",
        "/\[font=([.\w\x7f-\xff]+?)\](.+?)\[\/font\]/is",
        "/\[color=([a-z]{3,}|#?[0-9a-f]{6})\](.+?)\[\/color\]/is",
        "/\[size=(\d{1,2})\](.+?)\[\/size\]/s",
        "/\[align=(left|center|right)\](.+?)\[\/align\]/is",
        "/\[url=(.+?)\](.+?)\[\/url\]/is",
        "/\[url\]www\.(.+?)\[\/url\]/is",
        "/\[email=([.a-z0-9]+?@[.a-z0-9]+?)\](.+?)\[\/email\]/is",
        "/\[img\](.+?)\[\/img\]/"
    );
    $replacement = array(
        "<b>\\1</b>",
        "<i>\\1</i>",
        "<u>\\1</u>",
        "<font face='\\1'>\\2</font>",
        "<font color='\\1'>\\2</font>",
        "<font size='\\1'>\\2</font>",
        "<div align='\\1'>\\2</div>",
        "<a href='http://blog.163.com/ybbqg@126/blog/\\1'>\\2</a>",
        "<a href='http://www.\\1'>www.\\1</a>",
        "<a href='mailto:\\1'>\\2</a>",
        "<img src='http://blog.163.com/ybbqg@126/blog/\\1'\/>"
    );
    $str = preg_replace($pattern, $replacement, $str);
    return $str;
}

?>

posted @ 2012-03-16 07:57  前望  阅读(336)  评论(0编辑  收藏  举报