You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Magento小部件短代码中提取参数并转换为数组?

提取Block短代码参数为数组的解决方案

嘿,我来帮你搞定这个问题!针对你给出的Magento风格block短代码,咱们可以用PHP结合正则表达式来高效提取参数,转换成你需要的关联数组。下面是具体的实现步骤和代码:

1. 目标短代码示例

首先先明确要处理的短代码字符串:

$shortcode = '{{block type="cms/block" block_id="footer_links" template="ABC/roam/dp.phtml"}}';

2. 正则匹配提取参数

我们可以用正则表达式匹配key="value"的结构,然后把匹配结果转换成关联数组:

// 定义正则规则,匹配参数名和对应的双引号包裹值
$pattern = '/(\w+)\s*=\s*"([^"]+)"/';
// 执行全局匹配
preg_match_all($pattern, $shortcode, $matches);

// 初始化参数数组
$params = [];
// 遍历匹配结果,组装成关联数组
if (!empty($matches[1]) && !empty($matches[2])) {
    foreach ($matches[1] as $index => $key) {
        $params[$key] = $matches[2][$index];
    }
}

// 输出结果,你可以直接在自有模块里使用这个数组
print_r($params);

3. 执行结果

运行上面的代码后,你会得到这样的数组:

Array
(
    [type] => cms/block
    [block_id] => footer_links
    [template] => ABC/roam/dp.phtml
)

4. 进阶:处理带转义双引号的参数

如果你的短代码参数值里可能包含转义的双引号(比如description="This is a \"test\" value"),可以把正则规则调整为下面的版本,来兼容这种场景:

$pattern = '/(\w+)\s*=\s*"((?:\\\\.|[^"])*)"/';

这个调整后的正则会正确识别转义的双引号,不会提前终止匹配。

内容的提问来源于stack exchange,提问作者MSQ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:12:40