好的,基本上我有一个糟糕的网址数组,我想搜索一个字符串并将其删除。我想删除从开始标记到结束标记的所有内容,但前提是超链接中的url位于错误网址数组中。这是我如何描绘它的工作,但我不理解正则表达式。
foreach($bad_urls as $bad_url){
$pattern = "/<a*$bad_url*</a>/";
$replacement = ' ';
preg_replace($pattern, $replacement, $content);
}
提前致谢。
答案 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
属性。更加简单和万无一失。