删除字符串中的子引号

时间:2013-07-11 13:05:58

标签: php regex tags quote

我正在为删除过度引用的论坛制作插件,因此只有一个级别的引号:

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

<quote>subquote</quote>应该删除,因为它在另一个引用中。

最好的方法是什么?我认为这很普遍,但我不能谷歌。

应该是一些疯狂的正则表达式。我无法绕过这个。

2 个答案:

答案 0 :(得分:0)

如果你有 XML ,那么请使用它来循环每个<quote>

当你循环使用它时,可以使用strip_tags()删除子引号。

您可以使用 SimpleXML

没有必要使用“疯狂的正则表达式”

This link显示如何删除具有特定属性的项目,您可以使用它来满足您的需求。

答案 1 :(得分:0)

我只是用regexp,简单的方法做到了。使用负向前瞻解决了问题。

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

检查是否有任何子引用,并在一段时间内删除一个子引用。