PHP:如何解析HTML并删除链接和字符串

时间:2015-12-15 00:38:32

标签: php

我有一个函数从HTML中删除href链接我正在加载到iframe中。 html是电子邮件的完整imap HTML正文。

如果有人可以提供帮助,我有2个问题。

  1. 我正在尝试删除所有链接。所以我有A和AREA href链接。有没有其他类型的链接,我没想到的?我的印象是你不能在电子邮件中使用JS,所以我不能检查JS。我想删除所有链接。我不希望电子邮件内容可以点击。

  2. 在我的函数中,如何搜索特定字符串并在找到时将其删除。具体来说,我想从html中删除电子邮件地址。 我想我可以在我的功能中包含MAILTO,但这不会涵盖所有电子邮件地址。

    function stripLinks($lala){
       $dom = new DOMDocument();
       $htmltags = $lala;
       @$dom->loadHTML($htmltags);
    
       $xpath = new DOMXPath($dom);
       $hrefs = $xpath->evaluate("/html/body//a");
       for ($i = 0; $i < $hrefs->length; $i++) {
            $href = $hrefs->item($i);
            $href->removeAttribute('target');     
            $href->removeAttribute('href');
       }
       $hrefs_area = $xpath->evaluate("/html/body//area");
       for ($i = 0; $i < $hrefs_area->length; $i++) {
            $href = $hrefs_area->item($i);      
            $href->removeAttribute('target');     
            $href->removeAttribute('href');
       }
       $lala=$dom->saveHTML();
    
    return $lala;
    }
    
  3. 这是正确的方法吗?电子邮件有几种变体,所以我可以使用外卡吗?

     str_replace("email@address.com","",$lala);
    return $lala;
    

    感谢提前

    解决方案#2

    $pattern = "/[^@\s]*@[^@\s]*\.[^@\s]*/";
    $replacement = "[removed]";
    preg_replace($pattern, $replacement, $string);
    

0 个答案:

没有答案