我为匹配 PHP 中的短代码而编写的正则表达式有问题。
这是模式,$shortcode
短代码的名称在哪里:
\[$shortcode(.+?)?\](?:(.+?)?\[\/$shortcode\])?
现在,这个正则表达式在这些格式下表现得非常好:
[shortcode]
[shortcode=value]
[shortcode key=value]
[shortcode=value]Text[/shortcode]
[shortcode key1=value1 key2=value2]Text[shortcode]
但似乎最常见的格式有问题,
[shortcode]Text[/shortcode]
它返回匹配以下内容:
Array
(
[0] => [shortcode]Text[/shortcode]
[1] => ]Text[/shortcode
)
如您所见,第二个匹配项(应该是文本,因为第一个是可选的)包括开始标记的结尾和除最后一个括号之外的所有结束标记。
编辑:发现返回的匹配是第一个捕获,而不是第二个。请参阅 Regexr 中的正则表达式。
你能帮忙吗?我真的在这个问题上崩溃了。