首页 > 解决方案 > 如果值中有空格,PHP 会破坏数组值

问题描述

我有一个在 Twig 模板中调用的 PHP 函数,例如:

{{ test({"data":{"event":"content interactions", "action":"clicked: bookmark"}}) }}

我将数组传递给 PHP 方法以构建最终字符串:

function test($attributes): string
{
    $result = '';
    foreach ($attributes['data'] as $key => $value) {
        $result.=' data-attr-'.$key.'='.$value;
    }
    return $result;
}

预期的目的$result是: data-attr-action="content interactions" data-attr-action="clicked: bookmark" 但由于某种原因,如果 $value 中有空格,PHP 会破坏它,返回data-ga-event="content" interactions="" data-ga-action="clicked:" bookmark=""

我的问题是什么,导致空格被视为新行?如果$value是一个没有空格的字符串,那么整个概念就很好用——但不幸的是,我不能保证这一点。

标签: phptwig

解决方案


您的函数中缺少双引号似乎导致了这种情况。没有它们,实际结果是

data-attr-event=content interactions data-attr-action=clicked: bookmark

这使处理器感到困惑,因为不清楚下一个属性从哪里开始,因为它们自己的数据属性已经被空格分隔

尝试

function test($attributes): string
{
    $result = '';
    foreach ($attributes['data'] as $key => $value) {
        $result.=' data-attr-'.$key.'="'.$value.'"';
    }
    return $result;
}

推荐阅读