2011-07-11 7 views
0

基本的に、私は悪いURLの配列を持っています。私は文字列を検索してそれらを取り除きたいと思います。私は、ハイパーリンクのURLが不正な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とsubstrings/concatenationの束を使って終わった –

1

あなたの '悪いのURLの' は適切にURLをフォーマットされていると仮定すると、私はこのような何かやってお勧めします:

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); 
} 
関連する問題