Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.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 仅替换HTML标记之外的单词_Php_Regex_Dom_Preg Replace - Fatal编程技术网

Php 仅替换HTML标记之外的单词

Php 仅替换HTML标记之外的单词,php,regex,dom,preg-replace,Php,Regex,Dom,Preg Replace,我想替换HTML标记之外的单词 所以如果我 <a href="test.html" title="Hello">Hello</a> 获取dom的文本 现在我可以循环查看结果: foreach($test as $t) { if (strpos($t->innertext,$word)!==false) { $t->innertext = preg_replace( '/\b' . preg_quote(

我想替换HTML标记之外的单词

所以如果我

<a href="test.html" title="Hello">Hello</a>
获取dom的文本

现在我可以循环查看结果:

foreach($test as $t) {
    if (strpos($t->innertext,$word)!==false) {
        $t->innertext = preg_replace(
                '/\b' . preg_quote( $word, "/" ) . '\b/i',
                "<a href='$url' target='$target' data-uk-tooltip title='$item->title'>\$0</a>",
                $t->innertext,1
            );
    }
}
foreach($t测试){
if(strpos($t->innertext,$word)!==false){
$t->innertext=preg\u replace(
“/\b”.preg_quote($word,“/”)。\b/i“,
"",
$t->innertext,1
);
}
}

但不幸的是,如果
$item->title
包含$word,HTML结构就会崩溃。

看起来有很多混乱。根据,
$dom->find($tag)
返回所有标记的数组,但您正在寻找名为
text
的标记

也许你应该试试
$test=$dom->find('a')而不是

同样在代码中,不清楚变量
$url
$target
$item
来自何处:

foreach($test as $t) {
    if (strpos($t->innertext,$word)!==false) {
        $t->innertext = preg_replace(
            '/\b' . preg_quote( $word, "/" ) . '\b/i',
            "<a href='$url' target='$target' data-uk-tooltip title='$item->title'>\$0</a>",
            $t->innertext,1
        );
    }
}

使用DOMDocument您已经问过一次这个问题是的,ppl告诉我使用DOM库。是的。但这并不能解决我的问题。新个案;)“嗯,我学到了我必须使用DOM解析器来归档它。”。。。我能听到体育场周围的欢呼声,甚至还有墨西哥波!也许终究还是有希望的!也许小马可以停下来。。。更严肃的一点是:PHP确实有两个非常好的内置XML解析器(用于HTML):SimpleXML:和DOMDocument:-为什么不使用其中一个呢?@CD001:不能用SimpleXML解析HTML文档(大多数情况下不符合XML),所以唯一的方法是
DOMDocument
foreach($test as $t) {
    if (strpos($t->innertext,$word)!==false) {
        $t->innertext = preg_replace(
                '/\b' . preg_quote( $word, "/" ) . '\b/i',
                "<a href='$url' target='$target' data-uk-tooltip title='$item->title'>\$0</a>",
                $t->innertext,1
            );
    }
}
foreach($test as $t) {
    if (strpos($t->innertext,$word)!==false) {
        $t->innertext = preg_replace(
            '/\b' . preg_quote( $word, "/" ) . '\b/i',
            "<a href='$url' target='$target' data-uk-tooltip title='$item->title'>\$0</a>",
            $t->innertext,1
        );
    }
}
foreach($test as $t) {
    if (strpos($t->innertext,$word)!==false) {
        $t->innertext = preg_replace(
            '/\b' . preg_quote( $word, "/" ) . '\b/i',
            "Replacement",
            $t->innertext,1
        );
    }
}