使用 PHP 从 DOM html 中删除所有链接
Remove all links from DOM html with PHP
有一个字符串 $processhtml
包含一些 html。我试图在 PHP.
的帮助下从 html 中删除所有 link 标签及其内容
举例说明:
"This is some text with <a href="#">link</a>"
必须变成:
"This is some text with"
我在 DOM 文档的帮助下对该 html 进行了一些其他解析,因此试图找到与 DOM.
相关的解决方案
我试过:
$dom = new DOMDocument();
@$dom->loadHtml($processhtml);
foreach ($dom->getElementsByTagName('*') as $element) {
if ($element->nodeName == 'a') {
$element->parentNode->removeChild($element);
}
}
echo $dom->saveHTML();
结果:
部分 link 完全删除(好)
一些 link 替换为 "Question mark" 个字符(奇怪)
一些 link 保持不变(不好)
所以我的问题是:
1) 是什么导致我使用的代码不一致,如何解决?
2)是否有更好的方法来实现所需的功能? (正则表达式是一个禁忌 ;P )
提前致谢!
$pattern = '/<a .*?<\/a>';
preg_replace($pattern, "", $processhtml);
已测试并致力于 https://regex101.com/
有一个字符串 $processhtml
包含一些 html。我试图在 PHP.
举例说明:
"This is some text with <a href="#">link</a>"
必须变成:
"This is some text with"
我在 DOM 文档的帮助下对该 html 进行了一些其他解析,因此试图找到与 DOM.
相关的解决方案我试过:
$dom = new DOMDocument();
@$dom->loadHtml($processhtml);
foreach ($dom->getElementsByTagName('*') as $element) {
if ($element->nodeName == 'a') {
$element->parentNode->removeChild($element);
}
}
echo $dom->saveHTML();
结果:
部分 link 完全删除(好)
一些 link 替换为 "Question mark" 个字符(奇怪)
一些 link 保持不变(不好)
所以我的问题是:
1) 是什么导致我使用的代码不一致,如何解决?
2)是否有更好的方法来实现所需的功能? (正则表达式是一个禁忌 ;P )
提前致谢!
$pattern = '/<a .*?<\/a>';
preg_replace($pattern, "", $processhtml);
已测试并致力于 https://regex101.com/