程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了PHP - Preg Match All - Wordpress 多个带有多个参数的短代码大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决php - Preg Match All - Wordpress 多个带有多个参数的短代码?

开发过程中遇到php - Preg Match All - Wordpress 多个带有多个参数的短代码的问题如何解决?下面主要结合日常开发的经验,给出你关于php - Preg Match All - Wordpress 多个带有多个参数的短代码的解决方法建议,希望对你解决php - Preg Match All - Wordpress 多个带有多个参数的短代码有所启发或帮助;

我正在尝试找到一个能够捕获 wordpress 中生成的短代码内容的正则表达式。

我的短代码具有以下结构: [简码名称 param1="value1" param2="value2" param3="value3"]

参数的数量是可变的。

我需要捕获短代码名称、参数名称及其值。

我取得的最接近的结果是这样的

C:\Users\Myname\ApPDAta\Local\Programs\Python\python38-32\python.exe

如果我在同一个字符串中有以下内容:

/(?:\[(.*?)|\G(?!^))(?=[^][]*])\h+([^\s=]+)="([^\s"]+)"/

我明白了:

[specs product="test" category="body"]

[priceList keyword="216"]

[specs product="test2" category="network"]

我尝试了不同的正则表达式模型,但我总是遇到同样的问题,如果我有多个参数,则无法检测到它。

你知道我是如何做到这一点的吗?

谢谢 洛朗

解决方法

您可以使用 \G 锚点使用 3 个捕获组,其中捕获组 1 是短代码的名称,组 2 和 3 是键值对。

然后可以删除数组的第一个条目,并删除第一个、第二个和第三个条目中的空条目。

这是一个稍微更新的模式

(?:\[(?=[^][]*])(\w+)|\G(?!^))\h+(\w+)="([^"]+)"

Regex demo | php demo

示例

$s = '[specs product="test" category="body"]';
$pattern = '/(?:\[(?=[^][]*])(\w+)|\G(?!^))\h+(\w+)="([^"]+)"/';

$Strings = [
    '[specs product="test" category="body"]','[pricelist keyword="216"]','[specs product="test2" category="network" key="value"]'
];

foreach($Strings as $s) {
    if (preg_match_all($pattern,$s,$matches)) {
        unset($matches[0]);
        $matches = array_map('array_filter',$matches);
        print_r($matches);
    }
}

输出

Array
(
    [1] => Array
        (
            [0] => specs
        )

    [2] => Array
        (
            [0] => product
            [1] => category
        )

    [3] => Array
        (
            [0] => test
            [1] => body
        )

)
Array
(
    [1] => Array
        (
            [0] => pricelist
        )

    [2] => Array
        (
            [0] => keyword
        )

    [3] => Array
        (
            [0] => 216
        )

)
Array
(
    [1] => Array
        (
            [0] => specs
        )

    [2] => Array
        (
            [0] => product
            [1] => category
            [2] => key
        )

    [3] => Array
        (
            [0] => test2
            [1] => network
            [2] => value
        )

)

大佬总结

以上是大佬教程为你收集整理的PHP - Preg Match All - Wordpress 多个带有多个参数的短代码全部内容,希望文章能够帮你解决PHP - Preg Match All - Wordpress 多个带有多个参数的短代码所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:-