如何处理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)))




这里总结起来。

以上是本文的全部内容,希望能对您有所帮助,希望大家多多支持。