删除错误的超链接及其内部的内容

时间:2011-07-11 14:51:58

标签: php regex preg-replace

好的,基本上我有一个糟糕的网址数组,我想搜索一个字符串并将其删除。我想删除从开始标记到结束标记的所有内容,但前提是超链接中的url位于错误网址数组中。这是我如何描绘它的工作,但我不理解正则表达式。

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

提前致谢。

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

do not try to parse HTML using regular expressions。只需load up the HTML in a DOM,找到所有<a>代码并检查href属性。更加简单和万无一失。