
本文讲解如何在 PHP 中将 json_encode() 生成的 JSON 字符串中的双引号(")批量替换为单引号('),并强调该操作仅适用于字符串输出场景,结果不再符合 JSON 规范。
本文讲解如何在 php 中将 `json_encode()` 生成的 json 字符串中的双引号(`"`)批量替换为单引号(`'`),并强调该操作仅适用于字符串输出场景,结果不再符合 json 规范。
在 PHP 开发中,json_encode() 默认使用双引号包裹字符串,这是 JSON 标准的强制要求(RFC 8259)。但有时出于模板渲染、日志打印、前端调试或与非标准解析器交互等特殊需求,开发者希望输出形如 ['a.jpg','b.png'] 的单引号格式字符串——需注意:这不是合法 JSON,不可被 JSON.parse() 或标准 JSON 解析器安全消费。
正确做法是:先调用 json_encode() 得到标准 JSON 字符串,再对整个字符串执行双引号 → 单引号的全局替换:
$arr = ["1660109707.jpg", "1660109715.png", "1660201812.jpg", "1660201843.jpg", "1660208040.jpg"];
$json = json_encode($arr); // → '["1660109707.jpg","1660109715.png",...]'
$singleQuoted = str_replace('"', "'", $json); // → "['1660109707.jpg','1660109715.png',...]"
dd($singleQuoted);
// 输出:['1660109707.jpg','1660109715.png','1660201812.jpg','1660201843.jpg','1660208040.jpg']⚠️ 重要注意事项:
- 此操作不改变原始数组结构,仅修改最终字符串表现形式;
- 若数组元素本身含单引号(如
"O'Reilly.pdf"),直接str_replace('"', "'")会导致语法错误(如'O'Reilly.pdf'被截断),此时应避免使用单引号格式,或先转义内容; - PHP 原生数组定义支持单/双引号混用(
['a']和["a"]完全等价),但json_encode()输出永远为双引号; - 若目标是向 JavaScript 传递数据,请坚持使用标准
json_encode()并在 JS 端直接解析,而非手动替换引号——这是最安全、可维护的方式。
总结:单引号 JSON 字符串仅适用于展示或特定兼容场景;生产环境推荐遵循标准 JSON 规范,以保障跨语言、跨平台的数据互操作性与安全性。
立即学习“PHP免费学习笔记(深入)”;



















