我想把:<div id ="test">
<code><?php echo "abc";?></code>
</div>替换成:<div id ="test">
<code><?php phpinfo()?></code>
</div>版上问过高手://下面这句可以实现:
$html = preg_replace('#(?<=<code>)(.*)(?=</code>)#','<?php phpinfo();?>',$html);
//但是下面这两句为什么不行?
$html = preg_replace('#(?<=<code>)([.]*)(?=</code>)#','<?php phpinfo();?>',$html);
$html = preg_replace('#(?<=<code>)[.]*(?=</code>)#','<?php phpinfo();?>',$html);
//<code></code>标签内可能还有换行,我还想匹配换行,可下面还是不行:
$html = preg_replace('#(?<=<code>)[.\n]*(?=</code>)#','<?php phpinfo();?>',$html);正则菜鸟,请大侠指教。
BTW:正则前面和最后的#号是干什么的?
<code><?php echo "abc";?></code>
</div>替换成:<div id ="test">
<code><?php phpinfo()?></code>
</div>版上问过高手://下面这句可以实现:
$html = preg_replace('#(?<=<code>)(.*)(?=</code>)#','<?php phpinfo();?>',$html);
//但是下面这两句为什么不行?
$html = preg_replace('#(?<=<code>)([.]*)(?=</code>)#','<?php phpinfo();?>',$html);
$html = preg_replace('#(?<=<code>)[.]*(?=</code>)#','<?php phpinfo();?>',$html);
//<code></code>标签内可能还有换行,我还想匹配换行,可下面还是不行:
$html = preg_replace('#(?<=<code>)[.\n]*(?=</code>)#','<?php phpinfo();?>',$html);正则菜鸟,请大侠指教。
BTW:正则前面和最后的#号是干什么的?
用[]括号的一点就是一点, 放在()中是指任意字符
(?<=<code>)表示以<code>为开头,(?=</code>)表示以</code>为结尾。
第二个#后面加了模式修正符s就能使(.)匹配所有的字符,包括换行符。没有此设定的话,则不包括换行符。
http://deerchao.net/tutorials/regex/regex.htm
第2句和第3句匹配失效是因为[]里面的字符时原始字符,你的[.]等同于\.
第4句原理同上,如果要匹配换行符的话,同3楼所说,在修正符后面加上s即可