PHP BBCode正则表达式替换

PHP BBCode正则表达式替换,php,parsing,bbcode,Php,Parsing,Bbcode,我如何替换: <tag attr="z"> <tag attr="y"> <tag attr="x"></tag> </tag> </tag> 致: [tag=y] [/tag] 不使用扩展 我尝试过,但没有成功: preg_replace("#<tag attr=\"y\">(.+?)</tag>#i", "[tag=y]\\1[/tag]", $text)

我如何替换:

<tag attr="z">
    <tag attr="y">
        <tag attr="x"></tag>
    </tag>
</tag>

致:


[tag=y]
[/tag]
不使用扩展

我尝试过,但没有成功:

preg_replace("#<tag attr=\"y\">(.+?)</tag>#i", "[tag=y]\\1[/tag]", $text);
preg#u replace(“#(.+?)#i”,“[tag=y]\\1[/tag],$text”);

好吧,PHP的正则表达式实现支持PCRE的递归模式。然而,我会犹豫使用这样一个特性,因为它的神秘性。但是,既然你问:

不使用扩展

这是:


preg#u replace(“#(.+?)#i”,“[tag=y]\\1[/tag],$text”);单击“编辑”以使用更多信息更新您的问题,这比注释更容易阅读。为什么我不能运行此正则表达式代码两次?@Bestudio,您可以。也许会提出另一个问题?@Bestudio,对不起,我不知道你的意思。我不知道你说的“运行两次”是什么意思,我也不知道你说的“有一个例子”是什么意思。从我的回答中可以看出,正则表达式工作得很好,我的代码片段是自包含的:您可以运行它并查看它是否工作。如果您还有其他问题,我建议您为其创建另一个问题(如我之前所建议的)。祝你好运
preg_replace("#<tag attr=\"y\">(.+?)</tag>#i", "[tag=y]\\1[/tag]", $text);