php
  • regex
  • preg-replace
  • 2011-07-11 26 views 0 likes 
    0

    好吧,基本上我有一个坏的URL的数组,我想通过搜索一个字符串,并将它们删除。我想剥离从开始标记到结束标记的所有内容,但前提是超链接中的网址位于不正确网址的数组中。以下是我如何描绘它的工作原理,但我不太了解正则表达式。删除不良的超链接和其中的内容

    foreach($bad_urls as $bad_url){ 
        $pattern = "/<a*$bad_url*</a>/"; 
        $replacement = ' '; 
        preg_replace($pattern, $replacement, $content); 
    } 
    

    在此先感谢。

    +0

    你想完全删除“a”标签吗? –

    +0

    是的;我想找到每个$ bad_url的“a”标签,并完全删除标签和其中的文本 –

    回答

    0

    do not try to parse HTML using regular expressions。只需load up the HTML in a DOM,找到所有<a>标签并检查href属性。更简单和防呆。

    +0

    很高兴您引导我远离正则表达式。我在DOMDocument上丢失了一点点。我最终只使用了一堆strpos/strrpos和子串/串联 –

    1

    假设你的 '不良网址' 的格式正确的网址,我建议做这样的事情:

    foreach($bad_urls as $bad_url){ 
        $pattern = '/<[aA]\s.+[href|HREF]\=\"' . convert_to_pattern($bad_url) . '\".+<\/[aA]>/msU'; 
        $replacement = ' '; 
        $content = preg_replace_all($pattern, $replacement, $content); 
    } 
    

    ,并分别

    function convert_to_pattern($url) 
    { 
        searches = array('%', '&', '?', '.', '/', ';', ' '); 
        replaces = array('\%','\&','\?','\.','\/','\;','\ '); 
        return preg_replace_all($searches, $replaces, $url); 
    } 
    
    相关问题