PHP简单HTML Dom解析器,从某些元素中跳过单词替换

时间:2019-07-19 15:09:33

标签: php preg-replace simple-html-dom

我正在尝试使用php dom方法将链接添加到关键字,但是问题是它在它可以找到的所有实例上添加了链接。当关键字已经具有链接或者它位于img alt =“”或title =“”属性之内,类似在任何其他标签或CSS类之内时,我想跳过。

这个问题与此非常相似。 PHP simple html dom parser - find word

我尝试了使用$ tagsToExclude数组在上一篇文章中提到的答案,但这不起作用。

这是代码。

<?php
require_once 'simple_html_dom.php';

$html = new simple_html_dom();
$html = str_get_html('<html><body><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>

<p>Don\'t add link on Lorems</p>

<p>Add on Lorem again.</p>

<p>An existing link on <a href="http://lorem.net">Lorem</a></p>


<img src="Lorem.jpg" alt="Lorem text" title="Lorem image"></body></html>');


$nodes = $html->find('*');

$tagsToExclude = [
    "a",
    "img"
];

foreach($nodes as $node) {

    $keyword = 'Lorem';
    $link = '<a href="http://example.com">'.$keyword.'</a>';

    if (!in_array($node->tag, $tagsToExclude)) {

        if(strpos($node->innertext, $keyword) !== false) {
            $node->innertext = preg_replace('/\b'.$keyword.'\b/', $link, $node->innertext);
        }
    }
}

echo $html->outertext;
?>

谢谢

0 个答案:

没有答案