PHP preg_replace 转义反向引用正则表达式中的符号
PHP preg_replace escape ampersand in backreference regex
好的,我已经查过了,但是今天我的 SearchFU 不强。我在某些正则表达式 preg_replace('~$\s*<div>([^<]*?)</div>$\s*~me', '', $source);
中遇到了反向引用错误,我真的可以帮上忙。该表达式找到 <div>
标签和 returns 只是删除标签并包含换行符的内容。即:
<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 标记中的所有内容,但似乎想将其解析为新表达式。
有没有办法解决这个问题,或者我应该在执行此行之前预处理 & 吗?
这是正则表达式末尾的 e
修饰符。它导致替换为 eval()
'ed。删除它:
preg_replace('~$\s*<div>([^<]*?)</div>$\s*~m', '', $source);
好的,我已经查过了,但是今天我的 SearchFU 不强。我在某些正则表达式 preg_replace('~$\s*<div>([^<]*?)</div>$\s*~me', '', $source);
中遇到了反向引用错误,我真的可以帮上忙。该表达式找到 <div>
标签和 returns 只是删除标签并包含换行符的内容。即:
<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 标记中的所有内容,但似乎想将其解析为新表达式。
有没有办法解决这个问题,或者我应该在执行此行之前预处理 & 吗?
这是正则表达式末尾的 e
修饰符。它导致替换为 eval()
'ed。删除它:
preg_replace('~$\s*<div>([^<]*?)</div>$\s*~m', '', $source);