当前位置:  开发笔记 > 编程语言 > 正文

json_decode()中的新行和制表符(PHP 7)

如何解决《json_decode()中的新行和制表符(PHP7)》经验,为你挑选了1个好方法。

我的代码使用json_decode()正常与PHP 5.6.迁移到PHP 7.0后,json_decode()返回NULL并json_last_error()告诉我我的错误是:

控制字符错误,可能编码错误

调试后,我发现我的问题是字符串值中的制表符和换行符.如果我将它们都删除,它就可以了.如果我离开无论是新线选项卡,出现错误.

json_decode()PHP 7中的行为是否发生了变化?我想在我的.json文件中保留标签和新行,以提高可读性.如果我将标签替换为\ t并将新行替换为\n,则代码有效.

如何保留新的行和标签?



1> Will..:

由于软件许可问题,旧json模块已替换为jsond模块.您可以在此处查看此更改的讨论和附加的拉取请求.现在,关于事物的变化或变通方法的信息不多,但我可以看到strings([\0x00-\0x1F])中的所有控制字符都会触发错误.不幸的是,根据JSON标准,这种行为似乎是正确的:

在任何令牌之前或之后允许无关紧要的空格.空白字符为:字符列表(U + 0009),换行符(U + 000A),回车符(U + 000D)和空格(U + 0020).除了字符串中允许使用空格外,任何标记中都不允许使用空格.

换句话说,根本不允许在JSON字符串中使用文字制表符; 他们必须是\t\u0009.因此,您正在使用的JSON直接违反了标准.理想情况下,您应该获取JSON源以返回符合标准的JSON.如果这不起作用,则必须预处理JSON并将字符串内的选项卡转换为\t.

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有