使用PHP正则表达式将内容中的多个短代码分组

使用PHP正则表达式将内容中的多个短代码分组,php,regex,wordpress,shortcode,Php,Regex,Wordpress,Shortcode,我在内容中有多个短代码,如下所示: [mygroup group-name-1] [file* field-name-134 limit:200] [mygroup group-name-2] [file* field-name-135 limit:200] [/mygroup] [/mygroup] 我需要帮助捕获整个组和使用php正则表达式的内容 预期结果: [mygroup group-

我在内容中有多个短代码,如下所示:

[mygroup group-name-1]
    
    [file* field-name-134 limit:200]
    
        [mygroup group-name-2]
            [file* field-name-135 limit:200]    
        [/mygroup]
    
[/mygroup]
我需要帮助捕获整个组和使用php正则表达式的内容

预期结果:

[mygroup group-name-1]
    [file* field-name-134 limit:200]
[/mygroup]

[mygroup group-name-2]
    [file* field-name-135 limit:200]    
[/mygroup]
我有下面的正则表达式
preg\u match\u all('/\\[mygroup+(.*?\\]/',$shortcode,$matches)
,但它只捕获组标记及其名称

$matches结果:

Array
(
    [0] => Array
        (
            [0] => [mygroup group-name-1]
            [1] => [mygroup group-name-2]           
        )

    [1] => Array
        (
            [0] => group-name-1
            [1] => group-name-2            
        )

)

我也尝试过使用这种模式,但它与任何东西都不匹配。

您还需要将
文件签入您的正则表达式中。像这样的东西会让你更接近:

preg_match_all('/\\[mygroup +([^]]+?)\\]\s*\\[(file\\*[^]]+?)\]/', '[mygroup group-name-1]
    
    [file* field-name-134 limit:200]
    
        [mygroup group-name-2]
            [file* field-name-135 limit:200]    
        [/mygroup]
    
[/mygroup]', $matches);
然后,您可以对
文件
值使用索引1和索引2

PHP演示:

如果您对正则表达式的更改有任何疑问,请发表评论,可以在此处查看相关说明