首先,是的,我知道永远不应该使用正则表达式来解析 HTML,但是,在这种情况下,我正在获取一长串文本(实际上是 var_dump() 的输出)并使用几个正则表达式将其转换为 XHTML,所以我确切地知道我将要处理的标签。我序列中的最后两个正则表达式查找花括号并转换为 XHTML 片段。当花括号包含在字符串变量中时,它的效果很好,我<var></var>
在之前的正则表达式的标签之间输出。
所以,目前,我正在使用:/\s*{\s*/u
. <var></var>
我需要做的是调整它以忽略标签中任何位置的任何花括号。
我试过使用:/\s*{\s*(?!(?<!<var>)[^\{]*<\/var>)/u
但这不太正确。我还没有确定导致它无法正常工作的条件是什么。所以,我可能很接近这个正则表达式,或者我可能会走得很远。因此需要 SO 专业知识。谢谢你。
此外,如果这根本不可能,我可以做其他黑客攻击,即 base64_encode() 字符串,将其粘贴在<var></var>
标签中,然后作为最后一个正则表达式,base64_decode() 任何被<var></var>
标签包围的东西。我更愿意找到一个可用的正则表达式,更重要的是,只是好奇它是否可能。