【问题标题】:PHP preg_replace is outputing me the wrong result [duplicate]PHP preg_replace 输出错误的结果 [重复]
【发布时间】: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


【解决方案1】:

您的浏览器将<controller><action> 解释为html 标签并尝试解析它们,从而将它们删除。请参阅this,了解如何使用 html 编码逐字显示标签。

(?P<controller>[a-z-]+)\/(?P<action>[a-z-]+)

<br/>

(?P&lt;controller&gt;[a-z-]+)\/(?P&lt;action&gt;[a-z-]+)

您可以将其替换为(?P&amp;lt;\1&amp;gt;[a-z-]+)

【讨论】:

    猜你喜欢
    • 2018-02-24
    • 1970-01-01
    • 2013-01-28
    • 1970-01-01
    • 2016-03-19
    • 1970-01-01
    • 2012-02-11
    • 2010-12-10
    • 2021-02-11
    相关资源
    最近更新 更多