php字符串搜索和替换之前的文本
可能重复:php字符串搜索和替换之前的文本,php,string,Php,String,可能重复: 我正在寻找一种方法来更改包含php中某些文本的锚定标记中的所有文本 即: 我想搜索“这是文本”,然后用其他内容替换文本所在的锚定标记 使用正则表达式最容易吗 谢谢Html可以像xml一样处理。您应该使用php xml函数来实现这一点。请参见使用DOMXpath,您可以轻松做到这一点: $s =<<<EOM <a href="stackoverflow.com"><strong>This is text</strong>&
我正在寻找一种方法来更改包含php中某些文本的锚定标记中的所有文本 即:
我想搜索“这是文本”,然后用其他内容替换文本所在的锚定标记
使用正则表达式最容易吗
谢谢Html可以像xml一样处理。您应该使用php xml函数来实现这一点。请参见使用
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();
$s=createTextNode('Hello world');
$node->parentNode->replaceChild($new,$node);
}
echo$d->saveHTML();
我使用preg_replace进行搜索和替换,但对于希望使用regex解析HTML的任何人来说,我不知道如何开始这一至关重要的阅读——可能重复:,DOM解析器。它们是存在的。使用它们。最简单的方法可能是使用占位符,例如,并搜索这些占位符。此外,这可能有些过分,但您也可以使用DOM来确保实际替换的是正确的东西:
$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();