2010-03-18 111 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