【发布时间】:2020-08-07 22:29:11
【问题描述】:
我正在积极练习 php 正则表达式,但被替换功能卡住了,因为它显示的结果与我复制的教程完全不同。
所以函数preg_replace('/\{([a-z]+)\}/', '(?P<\1>[a-z-]+)', '{controller}\/{action}') 应该在输出中给我这个结果:(?P<controller>[a-z-]+)\/(?P<action>[a-z-]+)。 phpliveregex.com 确认https://www.phpliveregex.com/p/wIF
但是,这实际上是本地主机上的浏览器输出给我的内容:(?P[a-z-]+)\/(?P[a-z-]+)。
这怎么可能?我的 php 是否损坏或 preg_replace 函数现在工作方式不同?我的php版本是7.4.4
【问题讨论】:
-
也许您的浏览器将
<controller>和<action>解释为html 标签并尝试解析它们导致删除它们。 -
使用
htmlspecialchars函数最终为我工作
标签: php