日期:2014-05-17  浏览次数:20536 次

请教一个preg_replace的奇怪问题。
我需要在一个html文档中将 < br />这样的标签,替换成 <p/>,用的语句是这样的:

$demo = "abc <br/> def" ;
$demo = preg_replace('< *br */ *>', '<p/>', $demo);

最后demo结果为 "abc <<p/>> def"

怎么多出一对尖括号了呢?

但是同样的方法,使用ereg_replace就正常了:
$demo = "abc <br/> def" ;
$demo = ereg_replace('< *br */ *>', '<p/>', $demo);
demo输出:"abc <p/> def"

听说php以后会淘汰掉ereg_replace,但是我这个功能preg_replace老是莫名其妙在外边多出一对尖括号,我好郁闷呀!

为什么呀?

------解决方案--------------------
$demo = preg_replace('#< *br */ *>#', '<p/>', $demo);


你的 '< *br */ *>', '<p/>' 是将<>作为定界符用的