PHP 正则表达式提取双方括号内的参数(Modx 标签)

PHP Regex to extract parameters within double square brackets (Modx Tags)

我正在尝试编写一个正则表达式以从 modx 数据库中的内容数组中提取特定参数的值。标签的格式是:

[[!video? &path=`_path_to_video` &width=`123` &height=`123` &someotherparm=`bar`]] 

我正在尝试使用此正则表达式获取 &path 参数的内容:

preg_match_all('/\[\[path=`(.*?)`\]\]/', $content, $tags, PREG_PATTERN_ORDER) ;

但运气不好 - 当我转储 $tags 变量时它只是 returns 空数组。

我的正则表达式有问题吗?

试试这个正则表达式:

'/\[\[.*?&path=`([^`]+?)`.*?\]\]/'

您的模式与标签格式不匹配:

preg_match_all('/&path=`([^`]+)`/', $content, $tags, PREG_PATTERN_ORDER);
  • 匹配 &path= 然后反引号,然后
  • 匹配任何不是反引号的东西,直到另一个反引号并捕获它

如果你真的需要匹配 [[ 的存在并关闭 ]] 那么:

preg_match_all('/\[\[.*&path=`([^`]+)`.*\]\]/', $content, $tags, PREG_PATTERN_ORDER);