我正在为删除过度引用的论坛制作插件,因此只有一个级别的引号:
<quote>
<quote>subquote</quote>
quote111
</quote>
text
<quote>quote222</quote>
text
<quote>subquote</quote>
应该删除,因为它在另一个引用中。
最好的方法是什么?我认为这很普遍,但我不能谷歌。
应该是一些疯狂的正则表达式。我无法绕过这个。
答案 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);
检查是否有任何子引用,并在一段时间内删除一个子引用。