如果值中包含 space,PHP 会破坏数组值
PHP breaks an array value if value has a space in it
我在 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"
但是由于某种原因 PHP 如果其中有 space 就会破坏 $value,返回 data-ga-event="content" interactions="" data-ga-action="clicked:" bookmark=""
我的问题是什么导致 space 被视为新行?如果 $value
是一个没有 space 的字符串,那么整个概念就很好用——但不幸的是我不能保证这一点。
您的函数中缺少双引号似乎是导致此问题的原因。
没有它们,实际结果是
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;
}
我在 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"
但是由于某种原因 PHP 如果其中有 space 就会破坏 $value,返回 data-ga-event="content" interactions="" data-ga-action="clicked:" bookmark=""
我的问题是什么导致 space 被视为新行?如果 $value
是一个没有 space 的字符串,那么整个概念就很好用——但不幸的是我不能保证这一点。
您的函数中缺少双引号似乎是导致此问题的原因。 没有它们,实际结果是
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;
}