【问题标题】:How to replace a whole div with an other with preg_replace regEx如何用 preg_replace regEx 替换整个 div
【发布时间】:2013-02-24 02:14:04
【问题描述】:

我不明白如何在 PHP preg_replace 中用另一个 div 替换一个 div

$string ='
  <div id="myid">this has to be replaced</div>
  <p>here is something</p>
  <div id="any">any text not to be replaced</div>
';

如果我愿意

$string = preg_replace('/<div id=\"myid\">.*<\/div>/','anything',$string);

它不起作用,我不明白为什么?!

【问题讨论】:

  • 因为量词默认是贪婪的。看看regular-expressions.info/repeat.html。更好的是:使用 HTML 解析器和 DOM 操作来做任何你想做的事情。
  • 它适用于我。

标签: php html regex preg-replace


【解决方案1】:

由于您的regex is working fine 我怀疑您没有将preg_replace 的返回值分配给任何变量。

$string = preg_replace('/<div id=\"myid\">.*<\/div>/','anything',$string);

应该可以。


编辑问题后:

正如@Felix Kling 提到的,.* 是贪婪的,这意味着它匹配所有内容,直到最后一场匹配。您可以使用非贪婪量词(即.*?)。以下should work

$string = preg_replace('/<div id=\"myid\">.*?<\/div>/','anything',$string);

【讨论】:

  • 嗯,在 RegExr 上它确实有效,但我的 php 脚本只返回一个空白字符串。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-04
  • 1970-01-01
  • 2023-03-15
  • 2016-08-14
  • 2019-03-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多