【问题标题】:How to preg_replace this pattern: <!--[if gte mso 9]&gt;-->如何 preg_replace 这个模式:<!--[if gte mso 9]>-->
【发布时间】:2014-04-02 18:41:30
【问题描述】:

我如何preg_replace这个模式:&lt;!--[if gte mso 9]&amp;gt;--&gt;

这是我的完整代码:

$content = preg_replace("/<!--[if gte mso 9]&gt;-->/", "", $content);

【问题讨论】:

  • 第一:学习基本的正则表达式语法。你有多个正则表达式元字符,防止它们被视为模式的一部分,例如[.

标签: php replace preg-replace


【解决方案1】:

方括号在正则表达式中有特殊含义,所以需要转义:

$content = preg_replace("/&lt;!--\[if gte mso 9\]&amp;gt;--&gt;/", "", $content);

注意:当您在没有正则表达式的情况下进行简单替换时,这会更快:

`$content = str_replace("&lt;!--[if gte mso 9]&amp;gt;--&gt;", "", $content);

【讨论】:

  • 您能否详细说明为什么我应该使用 str_replace 以及它如何更快?我可以将它用于其他实例,例如 preg_replace("/ /" 和 preg_replace("/

    /"?

  • str_replace 只需获取给定的字符串,搜索并替换它。 preg_replace 将字符串视为更强大的正则表达式。正则表达式可以执行以下操作:/I have [0-9]* apples?/ 匹配 I have 1 appleI have 2 apples 等...(这只是正则表达式可以执行的大量操作中的一个示例)。但由于它更强大,解析和计算需要更长的时间。希望这更清楚,如果不是,请随时询问:) x
  • 知道了,很好的回复。最后一个问题,是否可以将上述 pre_replace 示例添加到一行中?而不是单独运行?我指的是 preg_replace("/ /" 和 preg_replace("/

    /"?

  • 啊,是的,对不起,我忘了回答这些问题。是的,你可以为空间:str_replace('&amp;nbsp;', ...。对于 h2,这取决于您是要尝试匹配被 &lt;h2&gt;&lt;/h2&gt; 包围的文本,还是只想匹配空的 &lt;h2&gt;&lt;/h2&gt; 事件。如果是后者,str_replace('&lt;h2&gt;&lt;/h2&gt;', ... 可以正常工作:) x
  • 没错,但我的问题是:我可以将这些模式添加到一行而不是运行三次吗?目前我有三行,例如: $content = str_replace("", "", $content); $content = str_replace('

    ', "", $content);...
猜你喜欢
  • 2016-12-29
  • 1970-01-01
  • 1970-01-01
  • 2012-06-28
  • 1970-01-01
  • 1970-01-01
  • 2016-05-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多