PHP API返回下载链接出现转义斜杠分隔符如何修复
问题原因
链接自动添加转义斜杠是PHP json_encode() 函数的默认特性:默认会对字符串内的正斜杠/做转义处理,输出为\/,该写法本身符合JSON语法规范,绝大多数JSON解析器读取时会自动还原为正常斜杠,不影响前端正常调用。如果需要输出无转义的链接,可通过以下方案修复:
修复方案
方案1:使用JSON_UNESCAPED_SLASHES参数(推荐)
调用json_encode()处理返回数组时,添加JSON_UNESCAPED_SLASHES常量作为第二个参数,即可关闭斜杠转义:
$response = ['link' => 'http://localhost/imageresizer/zip/'. basename($zipname)]; // 输出JSON时增加参数关闭斜杠转义 echo json_encode($response, JSON_UNESCAPED_SLASHES);
该参数仅支持PHP 5.4.0及以上版本,目前绝大多数运行环境都满足版本要求。
方案2:字符串替换(兼容低版本PHP)
如果运行环境PHP版本低于5.4.0,可通过字符串替换去掉转义斜杠:
$jsonStr = json_encode($response); echo str_replace('\\/', '/', $jsonStr);
该方案存在误替换字符串中合法转义字符的风险,仅作为临时兼容方案使用,优先选择方案1。
内容的提问来源于stack exchange,提问作者sam
相关产品推荐
相关产品推荐

