我正在尝试使用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;
?>
谢谢