の同じ数:マッチング二つのセクション私は、次を解析するためのコードを探してる回
一部TEXTTEXT:
一部TEXTTEXT
出力されるように、私は、不要な<span>
発生を削除する必要があります
私は一度これを行う正規表現を書いた:
/[^ <] * </SPAN>/i
<span>
と</span>
の両方でこの作業を同じ回数行うにはどうすればよいですか?
の同じ数:マッチング二つのセクション私は、次を解析するためのコードを探してる回
一部TEXTTEXT:
一部TEXTTEXT
出力されるように、私は、不要な<span>
発生を削除する必要があります
私は一度これを行う正規表現を書いた:
/[^ <] * </SPAN>/i
<span>
と</span>
の両方でこの作業を同じ回数行うにはどうすればよいですか?
$result = preg_replace(
'%(?<=<span>) # Assert that there is a directly preceding span tag
<span> # Match a span tag
((?:(?!</?span>).)*) # Match the contents of the tag only if they do not include another span tag
</span> # Match a closing span tag
(?=</span>) # Assert that there is a directly following span tag
%six',
'\1', $subject);
はあなたの例では動作しますが、それは一回の反復あたりのネストされたspan
タグの「層」削除されるため、2回適用する必要があります。
したがって、任意にネストされたタグを使用すると、ネストの各レベルに対してこれを1回呼び出す必要があります。
あなたは<span>
が直接そのマッチング</span>
が直接、別の</span>
によって付加される別の<span>
とが続いているかどうかを確認しようとすることができます。
しかし、マークアップを特定のスパンに追加できるので、スパンが役に立たないとは実際は言えません。マークアップがない場合、最後に残ったスパンも役に立たず、削除される可能性もあります。
n回目:正規表現はHTMLを解析するためのものではありません! – progo
正規表現ではできないと思いますが、文法は文脈自由ではないと思います。 –
@progo:もっと「like the n^1000th time」... – Tomalak