php字符串搜索并替换之前的文本

时间:2012-10-23 00:41:52

标签: php string

  

可能重复:
  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>

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

使用正则表达式最简单吗?

由于

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

您可以使用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();