0

過剰引用を削除するフォーラム用のプラグインを作成しているため、レベルの引用は 1 つだけです。

<quote>
    <quote>subquote</quote>
    quote111
</quote>
text
<quote>quote222</quote>
text

<quote>subquote</quote>別の引用に含まれているため、削除する必要があります。

それを行う最良の方法は何ですか?これは広まっていると思いましたが、ググることができません。

それはクレイジーな正規表現でなければなりません。私はこれについて頭を包むことができません。

4

2 に答える 2

0

簡単な方法で正規表現を使用しました。否定的な先読みを使用して問題を解決しました。

while ( preg_match("|<quote>((?!</quote>).)*?<quote>|us", $text) )
    $text = preg_replace("@(<quote>(?(?!quote>).)*?)<quote>(?(?!quote>).)*?</quote>@us", "$1", $text);

サブクォートが残っているかどうかを確認し、一度に 1 つのサブクォートを削除します。

于 2013-07-11T14:49:41.667 に答える
0

XMLがある場合は、それを使用して every でループします<quote>

ループ内にある場合は、strip_tags()を使用してサブクォートを削除できます。

そのためにSimpleXMLを使用できます。

「クレイジーな正規表現」を使用する必要はありません

このリンクは、ニーズに合わせて使用​​できる特定の属性を持つアイテムを削除する方法を示しています。

于 2013-07-11T13:13:37.840 に答える