谈谈php中的正则表达式 |
正则表达式无疑是perl,php等语言中最令人头疼的东西。php中正则表达式与perl中有不同,这里写出来,供大家参考 简单解释 script engine-microsoft vbscript/jscript的总称,当前最新为5.5 beta 1 .除换行外的任意字符 +数量,1或更多 ?数量,0或1 为了避免ubb代码转换,例子中的ubb标记的中括号使用全角 一、pattern要求严格 pattern中不能连续使用数量词,如.+?,则不允许,同样在script engine 5.0,5.1中也是如此。 但在perl和script engine 5.5 beta 1中不会错误,值得一提的是vbscript 5.5中必须要如此使用才会解释正确?而正式版本的ubb也使用了.+?这样的表述.在php中,由于不允许使用连续数量词,如果用.+的话,所以无法用正则表达式解释. [b]test1[/b][b]test2[/b]而是解释成test1[/b][b]test2 这个问题可以通过使用php3_pcre.dll来解决 二、子匹配 在使用regexp中往往使用()来描述子匹配,perl,script engine 5.5中用$1'$9或1'9来描述,在php中使用'9(在表 达式中需要用\0'\9)之类的进行描述表示被搜索的字符串,如替换ubb标记中的黑体 $str="[b]这是黑体[/b]"; $str=eregi_replace("[b](.+)[/b]","\1",$str); 三、像preg_replace等函数是由哪个dll提供? Perl 相容语法函式库 preg_match preg_split preg_replace preg_match_all 这些由php3_pcre.dll提供,通过php3_pcre.dll,我们可以用perl兼容的语法进行工作,同时也能解决以上的问题。 例子 dl("php3_pcre.dll"); $Text="[b]黑体1[/b][b]黑体2[/b]"; echo preg_replace("/[b](.+?)[/b]/is","\1",$Text); ?> 结果显示为黑体1黑体2 |
![]() |
百度中 谈谈php中的正则表达式 相关内容 |
![]() |
Google搜索中 谈谈php中的正则表达式 相关内容 |