2010-03-18 117 views
1

有人可以解释'e'标志的作用,或者将我链接到某个地方吗?我无法通过谷歌找到任何东西。正则表达式标志

实施例:

preg_replace("/a(b?)c/e", "search_foo_term('\$1')", $str); 

回答

7

E(PREG_REPLACE_EVAL)

如果该改性剂 被设置,preg_replace函数()不正常 替代反向引用在 替换字符串,评估其作为 PHP代码,并使用 替换搜索字符串的结果。单 报价,双引号,反斜杠() 和NULL字符将被 反斜杠代替 反向引用。只有preg_replace() 使用此修饰符;它被其他PCRE功能 忽略。

http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php

因此,考虑这个例子:

preg_replace("/a(b?)c/e", "search_foo_term('\$1')", $str); 

整个比赛将是什么search_foo_term更换()时,通过比赛对于B返回? 。

+0

真棒,谢谢。 – Cam 2010-03-18 08:59:28

+0

此答案已添加到[Stack Overflow Regular Expression FAQ](http://stackoverflow.com/a/22944075/2736496),在“修改器”下。 – aliteralmind 2014-04-10 00:35:25

2

e标志已被弃用,主要是出于安全原因。改为使用preg_replace_callback