【问题标题】:Comment a PHP line containing # / character注释包含 # / 字符的 PHP 行
【发布时间】:2020-08-20 00:04:50
【问题描述】:

如何注释掉下面这行 PHP 代码

$html = preg_replace('#(<br */?>\s*)+#i', '<br />', $html);

虽然这条线可以被类似的东西禁用

if (0==1)
    $html = preg_replace('#(<br */?>\s*)+#i', '<br />', $html);

但这仍然不是评论。

【问题讨论】:

  • 我认为?&gt; 是问题所在,因为它认为这是 PHP 代码的结束。
  • 如果你想让它正常工作直到得到正确答案,请将正则表达式更改为 '#(&lt;br */?\&gt;\s*)+#i' - 认为 \&gt; 会欺骗它。

标签: php


【解决方案1】:

我能想到的最好的方法是将您的正则表达式模式剥离到它自己的变量中,然后使用“.”分割这个字符串。我受到以下答案的启发,该答案还建议重做正则表达式,但不确定这是否是一种选择。

来源:https://stackoverflow.com/a/12498301/3324415

示例:

/*

$pattern = "'#(<br *" . "/?>\s*)+#i'";

$html = preg_replace($pattern, '<br />', $html);

*/

【讨论】:

  • 我认为您的正则表达式中缺少一些引号。
【解决方案2】:

问题是?>@Nigel Ren 在评论中提到了什么。 这 /?模式可以省略,因为 * 这样就可以了。

//$html = preg_replace('#(<br *>\s*)+#i', '<br />', $html);

类似的字符串也会出现这个问题

$string = "?>xxxx";

应该被注释掉。在这种情况下 ?可以替换为 \x3f (注意:在双引号中!)。

$string = "\x3f>xxxx";

这与 PHP 的字符串相同,但不是 PHP 结束标记。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-13
    • 2014-09-13
    • 2010-10-15
    • 2014-11-12
    • 1970-01-01
    • 1970-01-01
    • 2014-12-11
    相关资源
    最近更新 更多