PHP处理JSON斜杠转义需区分两种场景:一是json_encode自动转义/为/,可用JSON_UNESCAPED_SLASHES避免;二是外部JSON含非法反斜杠如d,需预处理或验证。

PHP 处理 JSON 中斜杠(/)的转义,核心在于分清两种不同场景:一种是 json_encode 时自动转义斜杠(如把 http:// 变成 http://),另一种是 外部传入的 JSON 字符串里含非法反斜杠(如 d、z 等非标准转义),两者原因和解法完全不同。
json_encode 输出中避免斜杠被转义
默认情况下,json_encode() 会对 / 添加反斜杠(变成 /),主要是为防止 类注入,但对现代前端已无必要,且影响可读性和存储体积。
- PHP 5.4+ 推荐直接使用标志位:
json_encode($data, JSON_UNESCAPED_SLASHES) - 低版本 PHP(str_replace('/', '/', json_encode($data)),注意只在最终输出前做,别用于后续解析
- 不建议用
addslashes()或多次json_encode()处理——会破坏结构或引入嵌套错误
外部 JSON 输入含非法反斜杠(如 d、q)
当第三方系统返回类似 {"path": "C: empile.txt"} 这种字符串时, 、 等未定义转义会导致 json_decode() 返回 null。
基于三引擎设计,从微信文章、新闻和博客网页提取干净内容,支持标题作者日期元数据,多格式和批量处理。
- 安全做法是预处理:用
str_replace('', '\', $json)把所有孤立反斜杠统一转为双反斜杠(即 JSON 合法的字面量表示) - 必须配合错误检查:
if (json_last_error() !== JSON_ERROR_NONE) { /* 处理失败 */ } - 不要用
stripslashes()反转义原始 JSON 字符串——它会删掉本该保留的"、\,导致解析崩溃
常见混淆点澄清
斜杠 / 和反斜杠 是两个完全不同的字符,处理逻辑不能混用:
立即学习“PHP免费学习笔记(深入)”;
-
/在 JSON 中本就是合法字符,无需转义;json_encode对它的转义是可选防护行为 -
是 JSON 转义起始符,单个出现即违法;必须成对(\)才表示一个字面量反斜杠 - 正则中匹配路径或 URL 时,斜杠常作分隔符,需换用其他符号(如
#或~)避免冲突,而非盲目转义


















