如何处理JSON中的特殊字符
JSON是Ajax应用程序的一个有效的格式,因为它允许Javascript对象和字符串值之间的快速转换,Ajax应用程序非常适合文本发送到服务器并接收相应的纯文本,不能相比的生成文本的API,可以生成API文本更可取;此外,JSON允许你处理本地Javascript对象,而无需为如何表达这些对象的头脑。XML还可以提供在文本方面类似的好处,但用于将Javascript对象的几个现有的API的XML没有JSON API成熟;有时,你必须创建和处理Javascript对象谨慎确保XML处理和API合作会议。但JSON,情况是完全不同的:它可以处理几乎所有可能的对象类型和回报给你一个很好的JSON数据表示。因此,JSON的最大价值在于Javascript可以真正作为一个Javascript而不是数据格式的语言处理。
您可以使用Javascript对象学习的所有技巧都可以应用到代码中,而不必担心如何将这些对象转换成文本。
1。退货问题
当JSON传递值时,如果有返回字符,它将挂起:
$str = preg_replace('(' { R}){ + }
没有规则的/
$str = str_replace(
结果表明字符串不受返回字符的干扰。
顺便说一下,记录一个PHP过滤器脚本:
< PHP
文档应该包含一个HTML文档。
这个示例将删除HTML标记、Javascript代码。
和空格字符。还有一些通用的字符。
将HTML实体放入相应的文本中。
$搜索=阵列(''si
' } * > 'si / /删除HTML标记
})},{ / /删除+空格
(| # 34) / / ;
(AMP | # 38);我
(LT | # 60);我
(GT | # 62);我
(nbsp | # 160);我
(否则| # 161);我
(162分| #);我
(163磅| #);我
(复印件| # 169);我
#( D +);e); / /运行PHP代码
$ =数组()
1
< <
CHR(161),
CHR(162),
CHR(163),
CHR(169),
CHR( 1));
文本= preg_replace美元(美元美元美元取代,搜索,文件);
>
2。HTML特殊字符
从服务器到JSON格式的数据将被传递到客户端,通过JS显示在HTML页面中,有一些特殊字符不能直接显示,如后台过the'msg #是显示在HTML页面中的JS,MSG显示# #,不用味精,这是因为之间的内容是HTML标签,并在#和HTML实体开始,所以显示不正常。
解决方案很简单,可以在JS被呈现到HTML页面之前进行转换。
var str = 'msg #;
文件。所有。DIV1 .innerHTML =+个+;
该字符串通常显示在HTML页面中。
字符串。原型。用HTML显示=函数(){
转换字符串数组
无功strarr = this.split('');
HTML页面的特殊字符显示空间不是本质上的,但是当多个空间被替换时,浏览器默认只显示一个,因此替换它。
无功htmlchar =lt;>;
对于(var i = 0;i < str.length;i++){
查找是否包含特殊字符html
如果(htmlchar.indexof(str.charat(我))!= 1){
如果存在,它们将被转换成相应的HTML实体。
开关(str.charat(I)){
案例< <:
StrArr.splice(我,1,<);
打破;
案例>:
StrArr.splice(我,1,>);
打破;
案例':
StrArr.splice(我,1,);
}
}
}
返回strarr.join('');
}
警报(str.displayhtml());
文件。所有。DIV2 .innerHTML = str.displayhtml();
三.逸出()函数
这个函数可以处理空间,斜线和其他任何可能影响浏览器的内容,并将其转换为Web的可用字符(例如,空间将被转换为% 20,浏览器将不被视为一个空间,但不改变,它将直接传递到服务器之后)。(通常,服务器会自动将它们转换回)传输的本质。
var url =nowamagic。phppeople =+逃跑(people.tojsonstring());
Request.open(
request.onreadystatechange = updatePage;
Request.send(空);
有两个缺点:这种方法有一个URL字符串的长度限制在一个GET请求是用来发送大数据块中的一个。虽然这个限制是非常广泛的,对象的JSON字符串表示的长度可能超出你的想象,尤其是当使用极其复杂的对象时,所有的数据。在网络以纯文本格式发送,发送数据的不安全感是超出你的处理能力。
总之,以上是GET请求的两个限制,而不是一个简单的与JSON数据相关的两件事。当他们想发送更多的用户名和姓氏时,可能需要更多的注意,比如表单中的选择。如果您想处理任何机密或非常长的内容,您可以使用POST请求。
4。引用问题
如果在JSON中包含引号或双引号,JSON的格式将被销毁,有两种方法可以解决它。
你可以用addslashes()函数处理字符串时,你是在图书馆,和之前的引号添加斜线。修改后的字符包括单引号(')、双引号(),反斜杠反斜杠(),和空字符null。
美元= addslashes($文本)文本;
Javascript,你可以这样做:
功能valuereplace(v){
V = v.tostring(更换(新)regexp('({ })','克'),);
返回v;
}
无功价值= encodeURI(美元。修剪(valuereplace(e.value)))
这里总结起来。
以上是本文的全部内容,希望能对您有所帮助,希望大家多多支持。