php - PHP Simple HTML Dom Parser,跳过某些元素的单词替换
问题描述
我正在尝试使用 php dom 方法添加到关键字的链接,但问题是它在它可以找到的所有实例上添加链接。当关键字已经有链接或者它在 img alt="" 或 title="" 属性中时,我想跳过,类似地在任何其他标签或 css 类中。
这个问题与这个问题非常相似。 PHP 简单的 html dom 解析器 - 查找单词
我用 $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;
?>
谢谢
解决方案
推荐阅读
- r - 在 Shiny 应用程序中使用 observeEvent 显示绘图
- javascript - 在 Nodejs 中制作局部变量的全局副本
- angular - Angular 9 ngClass 在 Internet Explorer 11 中无法正常工作
- c - 使用 getchar() 从文件中读取
- vhdl - 通常看不到波形的结果(Modesim)
- git - 对将 dev 请求拉回 master 感到困惑,一次又一次列出合并的提交
- c++ - 为 OpenMP 融合奇怪的循环
- reactjs - 通过数组过滤以找到匹配项,如果没有匹配项,则执行 else 语句
- ruby-on-rails - 将 Amadeus 机场和城市搜索自动完成添加到 Rails 应用程序
- javascript - 选择文本并将其包装在带有 Java 脚本的链接中