繁体   English   中英

使用PHP删除DOM html中的所有链接

[英]Remove all links from DOM html with PHP

有一个字符串$processhtml包含一些html。 我试图在PHP的帮助下从html中删除所有链接标记及其内容。

为了显示:

"This is some text with <a href="#">link</a>"

必须成为:

"This is some text with"

我在DOMDocument的帮助下对该html进行了一些其他解析,因此试图找到与DOM相关的解决方案。

我试过了:

           $dom = new DOMDocument();
           @$dom->loadHtml($processhtml);
            foreach ($dom->getElementsByTagName('*') as $element) {
                if ($element->nodeName == 'a') {
                    $element->parentNode->removeChild($element);
                }
            }
            echo $dom->saveHTML();

结果:

  1. 一些链接完全删除(好)

  2. 一些链接替换为“问号”字符(Wierd)

  3. 一些链接保持不变(不好)

在此输入图像描述

所以我的问题是:

1)是什么导致我使用的代码中的这种不一致以及如何解决它?

2)有没有更好的方法来实现所需的功能? (正则表达式是禁止的; P)

提前致谢!

$pattern = '/<a .*?<\/a>';
preg_replace($pattern, "", $processhtml);

经过测试并在https://regex101.com/上工作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM