当前位置: 代码迷 >> PHP >> PHP正则处理非匹配项,该如何处理
  详细解决方案

PHP正则处理非匹配项,该如何处理

热度:143   发布时间:2012-03-15 11:50:39.0
PHP正则处理非匹配项
比如要将<?...?>标签以外的代码。例如给加上花括号。

要求是把下面的代码:
aaa<?...?>bbb<?...?>ccc
要处理成这样:
{aaa}<?...?>{bbb}<?...?>{ccc}

注意<?...?>中间的内容和<?...?>以外的内容都是不固定的。
而我们需要处理的是<?...?>外面的东西。就是aaa,bbb,ccc那些东西。

------解决方案--------------------
$a = array('/(.)<\?/','/\?>(.)/');
$b = array('$1}<?','?>{$1');
echo $c = preg_replace($a,$b,'{'.$str.'}');

自己测试一下
------解决方案--------------------
$s = "aaa<?...?>bbb<?...?>ccc";
echo preg_replace("/(^|\?>)(.+)(<\?|$)/iU", "\\1{\\2}\\3", $s);


{aaa}<?...?>{bbb}<?...?>{ccc}
  相关解决方案