代码之家  ›  专栏  ›  技术社区  ›  Cam

正则表达式标志

  •  1
  • Cam  · 技术社区  · 15 年前

    有人能解释“e”标志的作用吗,或者把我链接到某个地方?我通过谷歌找不到任何东西。

    例子:

    preg_replace("/a(b?)c/e", "search_foo_term('\$1')", $str);
    
    2 回复  |  直到 11 年前
        1
  •  7
  •   Tom Haigh    15 年前

    E(preg_replace_eval)

    如果这个修饰符 已设置,preg_replace()正常 在 替换字符串,计算为 PHP代码,并将结果用于 替换搜索字符串。单曲 引号、双引号、反斜杠() 空字符将被转义 替换的反斜杠 回溯引用。仅限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);
    

    整个匹配的替换将是当传递b的匹配时search foo\u term()返回的结果?.

        2
  •  2
  •   René Höhle oasisfleeting    11 年前

    不推荐使用e标志,主要是出于安全原因。使用 preg_replace_callback 相反。