将 HTML 字符串安全嵌入 JSON 的正确方法-html教程

本文详解如何将动态生成的 html 内容(如表格)作为字符串字段正确编码进 json,避免转义错误、非法字符和 sql 注入风险,并提供完整、安全、可验证的实现方案。

在 Web 开发中,常需将 HTML 片段(如患者信息表)作为字符串字段嵌入 JSON 响应返回给前端(例如用于动态渲染或第三方 API 集成)。但直接拼接字符串再手动包裹 JSON 结构(如 ‘{“entities”: ‘ . $json . ‘}’)极易导致格式错误——正如问题中所示:HTML 中的换行符(\r\n)、斜杠(/)、引号及未转义的 符号会破坏 JSON 合法性,使 jsonformatter 报错,且前端 JSON.parse() 失败。

根本原因在于:JSON 必须严格遵循规范,所有字符串值(包括含 HTML 的字符串)必须由 json_encode() 统一处理,而非人工拼接。 PHP 的 json_encode() 会自动对特殊字符(如 “, \, /, 控制符等)进行标准转义,并确保 UTF-8 编码安全,这是任何字符串插值都无法替代的。

✅ 正确做法:全程使用 json_encode() 构建嵌套结构:

$folio = $_POST['folio'] ?? '';

// ✅ 使用预处理语句防止 SQL 注入(关键安全实践)
$stmt = mysqli_prepare($conn2, "SELECT * FROM m_folio WHERE m_No = ?");
mysqli_stmt_bind_param($stmt, "s", $folio); // 注意:若 m_No 是字符串类型,用 "s";若为整型,用 "i"
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
$row = mysqli_fetch_assoc($result);

// ✅ HTML 内容作为纯字符串赋值,不作任何手动转义
$row['cardata'] = patient_file();

// ✅ 全量结构由 json_encode() 一次性安全序列化
$payload = json_encode([
    'entities' => [$row]
], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);

// ✅ 输出前检查编码是否成功
if ($payload === false) {
    http_response_code(500);
    echo json_encode(['error' => 'JSON encoding failed: ' . json_last_error_msg()]);
    exit;
}

header('Content-Type: application/json; charset=utf-8');
echo $payload;

? 关键注意事项:

夏夕资源网专注于CMS网站模板,主流语言整站网站源码下载,网站建设相关教程分享,好用的软件素材整合下载,提供一站式便捷自助服务。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"zy.lucklyus.top",如遇到无法解压的请联系管理员!
夏夕资源网-网站模板_免费源码_资源素材 » 将 HTML 字符串安全嵌入 JSON 的正确方法-html教程
在线时间:12:00 - 22:00
关注微信公众号:微信公众号
站长邮箱:[email protected]
  • 运营天数: 1391+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 3996255+
  • 本周更新: 0+
  • 最后更新: 2026-03-16

本站指数

×
  • 运营天数: 1391+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 3996255+
  • 本周更新: 0+
  • 最后更新: 2026-03-16