好的,我已经检查过了,但今天我的SearchFU并不强大。我在某些正则表达式preg_replace('~$\s*<div>([^<]*?)</div>$\s*~me', '\1', $source);
中遇到了反向引用的错误,我真的可以用手了。表达式查找<div>
标记,并仅返回删除标记和封闭换行符的内容。即:
<td>
<div>some value</div>
</td>
变为
<td>some value</td>
一切正常,直到<div> </div>
导致:
Parse error: syntax error, unexpected '&' in D:\wamp\www\processfile.php(18)
: regexp code on line 1 Call Stack: 0.0010 143600 1. {main}()
D:\wamp\www\processfile.php:0 0.0350 170328 2. preg_replace()
D:\wamp\www\processfile.php:18 Fatal error: preg_replace(): Failed evaluating
code: in D:\wamp\www\processfile.php on line 18 Call Stack: 0.0010 143600
1. {main}() D:\wamp\www\processfile.php:0 0.0350 170328 2. preg_replace()
D:\wamp\www\processfile.php:18
如果我删除\ 1反向引用,表达式将很乐意删除div标签中的所有内容,但似乎想要将其解析为新表达式。
有没有解决方法,或者我应该在此行执行之前预先处理&amp; s?
答案 0 :(得分:1)
这是正则表达式末尾的e
修饰符。它导致替换为eval()
。删除它:
preg_replace('~$\s*<div>([^<]*?)</div>$\s*~m', '\1', $source);