正则表达式标志

发布于 2024-08-26 00:49:58 字数 147 浏览 2 评论 0原文

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

例子:

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

Can someone explain what the 'e' flag does, or link me to somewhere that does? I couldn't find anything via google.

Example:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

神仙妹妹 2024-09-02 00:49:58

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 的匹配时返回的内容? 。

e (PREG_REPLACE_EVAL)

If this modifier
is set, preg_replace() does normal
substitution of backreferences in the
replacement string, evaluates it as
PHP code, and uses the result for
replacing the search string. Single
quotes, double quotes, backslashes ()
and NULL chars will be escaped by
backslashes in substituted
backreferences. Only preg_replace()
uses this modifier; it is ignored by
other PCRE functions.

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

So given this example:

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

The replacement for the entire match will be what search_foo_term() returns when passed the match for b? .

高冷爸爸 2024-09-02 00:49:58

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

The e flag is deprecated, mostly for security reasons. Use preg_replace_callback instead.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文