本文讲解如何将动态生成的 html 字符串(如患者信息表格)正确序列化为 json,避免手动拼接导致的格式错误、转义缺失和 xss/sql 注入风险。核心是全程使用 `json_encode()` 处理数据结构,而非字符串拼接。
在 Web 开发中,常需将 HTML 内容(例如患者档案表格)作为字符串嵌入 JSON API 响应中供前端渲染。但若处理不当——尤其是通过字符串拼接构造 JSON——极易引发解析失败、特殊字符未转义、换行符干扰或安全漏洞。
你遇到的错误正是典型问题:原始代码中使用了 ‘”entities”: ‘ . $jasondata . ‘}’ 手动拼接 JSON,导致:
- HTML 中的双引号 “、斜杠 /、换行符 \r\n 和制表符 \t 未被 JSON 标准转义;
- json_encode() 生成的 $jasondata 本身已是合法 JSON 字符串,再用字符串包裹会破坏嵌套结构;
- 最终输出不符合 JSON 规范(如键名未加引号、多余空格、非法控制字符),JSON Formatter 工具报错。
✅ 正确做法:始终将数据组织为 PHP 关联数组,再由 json_encode() 统一序列化。它会自动处理:
- 字符串内双引号转义为 \”;
- 反斜杠、换行符、制表符等 Unicode 转义(如 \n, \t);
- 键名与字符串值强制加双引号;
- 确保整个输出严格符合 RFC 8259 JSON 标准。
以下是优化后的完整实现: