这不关什么全局匹配的问题吧?(小弟对JS的正则不是很清楚,猜测而已)
因为PHP默认是贪婪匹配,所以最后的结果是正确的,如果不需要贪婪匹配
那么就在匹配模式后面加上?,例如:
abbabba这个字符串
/a.*a/i就会匹配正则字符串
/a.*?a/i就只匹配到abba而已
至于嵌套匹配可以参考这个文档
http://www.regexlab.com/zh/regtopic.htm需要注意的是,PHP里面的嵌套匹配如果不是匹配整个表达式
就把?R中的R改成1或者2或者3之类的,就是第几个子模式的意思
我曾经提过这种问题,坛子里面有几个牛人帮忙解决了
在这里也尽棉薄之力。
因为PHP默认是贪婪匹配,所以最后的结果是正确的,如果不需要贪婪匹配
那么就在匹配模式后面加上?,例如:
abbabba这个字符串
/a.*a/i就会匹配正则字符串
/a.*?a/i就只匹配到abba而已
至于嵌套匹配可以参考这个文档
http://www.regexlab.com/zh/regtopic.htm需要注意的是,PHP里面的嵌套匹配如果不是匹配整个表达式
就把?R中的R改成1或者2或者3之类的,就是第几个子模式的意思
我曾经提过这种问题,坛子里面有几个牛人帮忙解决了
在这里也尽棉薄之力。
<?php
$a='
<div style="border:1px red solid">
<div>aaaaaaaaa</div>
<div>bbbbbbbbb</div>
<div>
<p>
<div>ccccccccc</div>
</p>
</div>
</div>';while(preg_match('/<([a-z]+)([^><]*)>[^><]*<\/\1>/isU',$a)){
$a=preg_replace('/<([a-z]+)([^><]*)>([^><]*)<\/\1>/isU','[\1\2]\3[/\1]',$a);
}echo $a;?>