【问题标题】:preg_replace: regex does not workpreg_replace:正则表达式不起作用
【发布时间】:2014-05-01 18:52:50
【问题描述】:

我正在尝试从带有 RegEx 的 RSS 提要中删除带有社交链接的部分,如下所示:

preg_replace("/<p>.*?facebook.*?</p>/", "", $rss_string);

$rss_string 可以是例如哪里。

<description>important_content&lt;p&gt;facebook_rubbish_here&lt;/p&gt;</description>

起初它是无效的修饰符'p'。然后我将 /p 更改为 \/p 导致它运行,但它没有找到任何东西......我做错了什么?我没有逃避我应该逃避的事情吗?

谢谢!

【问题讨论】:

  • 您需要转义正则表达式中的正斜杠或使用不同的分隔符(例如#)。

标签: php regex preg-replace


【解决方案1】:

这是因为您使用的是正则表达式定界斜杠,而您的正则表达式也包含斜杠。转义正斜杠或更好地使用替代正则表达式分隔符。

preg_replace('~&lt;p&gt;.*?facebook.*?&lt;/p&gt;~', "", $rss_string);

【讨论】:

    【解决方案2】:

    正如我所说,然后我逃脱了 /p 但它仍然不起作用。我刚刚发现解决方案是在 preg_replace 中,DOT 与换行符不匹配,所以我需要使用 's' 选项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-20
      • 2016-07-11
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多