【问题标题】:php string search and replace text before [duplicate]php字符串搜索并替换[重复]之前的文本
【发布时间】:2012-10-23 00:41:52
【问题描述】:

可能重复:
RegEx match open tags except XHTML self-contained tags
How to parse and process HTML with PHP?
Simple: How to replace “all between” with php?

我正在寻找一种方法来更改包含 php 中某些文本的锚标记中的所有文本

即:

<a href="stackoverflow.com"><strong>This is text</strong></a>

我想搜索“这是文本”,然后将文本所在的锚标记替换为其他内容。

使用正则表达式最容易吗?

谢谢

【问题讨论】:

  • 我使用 preg_replace 进行搜索和替换,但我不知道如何从 结束
  • 对于任何希望使用正则表达式解析 HTML 的人来说非常重要的读物 - stackoverflow.com/questions/1732348/…
  • 可能重复:123
  • DOM 解析器。它们存在。使用它们。
  • 最简单的方法可能是使用占位符,例如, 并搜索它们。此外,这可能有点矫枉过正,但您也可以使用 DOM 来确保您实际上替换了正确的东西:php.net/manual/en/domdocument.loadhtml.php

标签: php string


【解决方案1】:

Html 可以像 xml 一样对待。您应该使用 php xml 函数来执行此操作。见http://php.net/manual/en/book.xml.php

【讨论】:

    【解决方案2】:

    您可以使用DOMXpath 轻松做到这一点:

    $s =<<<EOM
    <a href="stackoverflow.com"><strong>This is text</strong></a>
    EOM;
    
    $d = new DOMDocument;
    $d->loadHTML($s);
    $x = new DOMXPath($d);
    
    foreach ($x->query("//a[contains(strong, 'This is text')]") as $node) {
            $new = $d->createTextNode('Hello world');
            $node->parentNode->replaceChild($new, $node);
    }
    
    echo $d->saveHTML();
    

    【讨论】:

      猜你喜欢
      • 2016-12-08
      • 2017-04-03
      • 2019-03-28
      • 1970-01-01
      • 2023-02-02
      • 1970-01-01
      • 2020-01-06
      • 2015-11-13
      • 1970-01-01
      相关资源
      最近更新 更多