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

Laravel 5.8中PHP数组传递给JS时json_encode输出转义引号如何解决

问题原因
  • Laravel 框架的{{ }}输出语法默认会对内容做HTML实体转义,因此json_encode生成的双引号会被转译为",导致JS无法正常识别为数组结构
  • 原数组元素存在前导空格(如" poop"、" feed"),是调用explode分割字符串时残留的格式问题
  • 你期望的[pee,poop,feed]属于无引号数组格式,在JS语法中仅当元素是已声明的变量名时才合法,如果是字符串值,带双引号的["pee","poop","feed"]才是合法的字符串数组结构,并不是格式错误。
解决方法
  1. 替换输出语法取消HTML转义,Laravel中使用{!! !!}替代{{ }}输出JSON内容即可保留原生双引号:
console.log({!! json_encode($logEnabled) !!});
  1. 若需要清理数组元素的多余空格,可在PHP侧分割后做trim处理:
$logEnabled = array_map('trim', explode(',', $baby->logEnabled));

处理后输出的JSON结构为["pee","poop","feed"],JS可以直接识别为正常数组对象使用。
3. 如果你确认需要无引号的数组结构(仅适用于数组值对应JS端已定义变量的场景),可以在PHP侧直接拼接字符串输出:

$jsArray = '[' . implode(',', $logEnabled) . ']';

JS端直接输出即可:

console.log({!! $jsArray !!});

注意:该方式如果用于输出字符串值会触发JS未定义变量报错,非特殊场景不推荐使用。

内容的提问来源于stack exchange,提问作者code-8

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:39:03