Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php字符串搜索和替换之前的文本_Php_String - Fatal编程技术网

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();