【发布时间】:2011-02-03 14:01:51
【问题描述】:
这是用于 WordPress 中“短代码”的正则表达式(一个用于整个标签,另一个用于属性)。
return '(.?)\[('.$tagregexp.')\b(.*?)(?:(\/))?\](?:(.+?)\[\/\2\])?(.?)';
$pattern = '/(\w+)\s*=\s*"([^"]*)"(?:\s|$)|(\w+)\s*=\s*\'([^\']*)\'(?:\s|$)|(\w+)\s*=\s*([^\s\'"]+)(?:\s|$)|"([^"]*)"(?:\s|$)|(\S+)(?:\s|$)/';
它会解析类似的东西
[foo bar="baz"]content[/foo]
或
[foo /]
在 WordPress trac 中,他们说它有点缺陷,但我的主要问题是它不支持属性内的短代码,例如
[foo bar="[baz /]"]content[/foo]
因为正则表达式会在第一次出现右括号时停止主简码,所以在示例中它呈现
[foo bar="[baz /]
和
"]content[/foo]
按原样显示。
是否有任何方法可以更改正则表达式,使其绕过任何出现的 [ 和 ] 及其在开始标记或自闭标记之间出现的内容?
【问题讨论】:
-
我们在哪里可以找到这个正则表达式?如果我们能确切地看到它是如何被使用的,那将会很有帮助。