实例:正则表达式法ubb转换成html

<?php

//实例:ubb转换
//扫盲...所谓UBB代码,是指论坛中的替代HTML代码的安全代码。
//这种代码使用正则表达式来进行匹配,不同的论坛所使用的UBB代码很可能不同,不能一概而论。
//UBB代码的出现,使得论坛可以使用类似HTML的标签来增加文字的属性,同时又不用害怕HTML代码中所夹带的不良信息


//正则表达式()分组含义,和贪婪问题解决法U(仅与距离最近的字符匹配)
//要将[b][/b]换成html的<strong></strong>标签
$str = 'This is [b]php5[/b],and this is [b]php6[/b]';
echo $str.'<br />';

//$mode = '/[b](.*)[/b]/';			//此处的[]是字符括号,不是语法[a-z],所以需要转义加\
//.*匹配任意字符;()分组
$mode = '/\[b\](.*)\[\/b\]/';		//此时带括号的为1组,可用\1提取
//$mode = '/(\[b\])(.*)(\[\/b\])/';	//如果都带括号,此时分3组,分别为\1,\2,\3

$replace = '<strong></strong>';		//标签中需要带字符,否则输出为“This is”
echo preg_replace($mode,$replace,$str).'<br />';

$replace = '<strong>\1</strong>';		//输出书出现贪婪问题,即第一个[b]与最后一个[/b]配对了,而不是与自己对应的配对,将中间所有字符加粗	
echo preg_replace($mode,$replace,$str).'<br />';

//使用U解决贪婪问题;只跟踪到最近的一个匹配符并结束
$mode = '/\[b\](.*)\[\/b\]/U';
echo preg_replace($mode,$replace,$str).'<br />';

?>

输出结果:

你可能感兴趣的:(ubb转html,解决贪婪问题)