2016-06-24 11 views
1

1つの正規表現を使用して2種類のタグを検索したいと考えています。私はの構文を見て、|を使ってこのトピックに関する別の質問を見つけました。それは私のためにはうまくいきませんでした。PHP preg_match_all複数のHTMLタグ

のみ

$removeiframe = preg_replace("#<iframe[^>]+>.*?</iframe>#is", "", $descriptiontext);

私が使用してみましたパターンのiframeを見つけるための私の元のパターン:

$removeiframe = preg_replace("#<(iframe|img)[^>]+>.*?</(iframe|img)>#is", "", $descriptiontext); 

私は現在、最後のパターンを取得しています応答:

場合をテキストには返される単一のiframeが含まれます。

テキストが複数のiframeが含まれている場合、それはこの

[ 
    [0] => '<iframe></iframe>' 
    [1] => '<img></img><iframe></iframe>' 
] 

と私は

[ 
    [0] => '<iframe></iframe>', 
    [1] => '<img></img>', 
    [2] => '<iframe></iframe>', 
] 
+2

(Uフラグを追加します)このためUngreedy表現を使用する必要があります取得しようとしていますが返されます正規表現はHTMLやXML文書を処理するのには適していません。代わりにXMLパーサー(DOMDocument)を使用してください –

+0

2番目の代替リストの代わりに逆参照 '(\\ 1)'を使用してください。 – mario

+0

ちょっと@MaximKrizhanovsky私はこれをどのように使用しているかを完全に忘れてしまった。これは説明フィールドとして使用されますが、iframeに貼り付けると自動的にテキストから選択して別の場所に配置します。フィールド全体がテキストエリアです。これはDOMDocumentを使用しても可能ですか? – Kjaal

答えて

0

あなたは

+1

regexを使ってマークアップを使用するべきではありません。これはコメントであり、答えではありません。 –

+0

@EliasVanOotegemコード例を書いた方が良いでしょうが、これは確かに答えです。右のものですが、これはアップ/ダウンボントが対象です)。 [なぜこのメタポストを参照してください](http://meta.stackoverflow.com/questions/287563/youre-doing-it-wrong-a-ple-sanity-in-the-low-quality-postsqueue ) – Machavity

関連する問題