怎样对一个php 字符串 特殊字符中的特殊字符进行处理

顺便记录一个PHP过滤脚本:
// $document 应包含一个 HTML 文档。
// 本例将去掉 HTML 标记,javascript 代码
// 和空白字符。还会将一些通用的
// HTML 实体转换成相应的文本。
$search = array ("'&script[^&]*?&.*?'si", // 去掉 javascript
"'&[\/\!]*?[^&&]*?&'si", // 去掉 HTML 标记
"'([\r\n])[\s]+'", // 去掉空白字符
"'&(quot|#34);'i", // 替换 HTML 实体
"'&(amp|#38);'i",
"'&(lt|#60);'i",
"'&(gt|#62);'i",
"'&(nbsp|#160);'i",
"'&(iexcl|#161);'i",
"'&(cent|#162);'i",
"'&(pound|#163);'i",
"'&(copy|#169);'i",
"'&#(\d+);'e"); // 作为 PHP 代码运行
$replace = array ("",
"chr(\\1)");
$text = preg_replace ($search, $replace, $document);
HTML特殊字符
从服务器端以JSON格式将数据传递到客户端后,通过JS显示在HTML页面时,有一些特殊字符不能直接显示,如后台传递过来的是 'msg #' 通过JS显示在HTML页面中时,显示成了 msg # ,并不是msg #,这是由于&与&之间的内容看作是HTML标签了,而以&开头的 与#为HTML实体,所以显示不正常。
解决办法很简单,在JS将其渲染到HTML页面前转换一下即可:
type="text/javascript"
var str ='&b&msg&/b& #';
document.all.div1.innerHTML='&pre&'+str+'&/pre&';
//js中的字符串正常显示在HTML页面中
String.prototype.displayHtml=function(){
//将字符串转换成数组
var strArr =this.split('');
//HTML页面特殊字符显示,空格本质不是,但多个空格时浏览器默认只显示一个,所以替换
var htmlChar="&&&";
for(var i =0; i& str.length;i++){
//查找是否含有特殊的HTML字符
if(htmlChar.indexOf(str.charAt(i))!=-1){
//如果存在,则将它们转换成对应的HTML实体
switch(str.charAt(i)){
strArr.splice(i,1,'&');
strArr.splice(i,1,'&');
strArr.splice(i,1,'&');
return strArr.join('');
alert(str.displayHtml());
document.all.div2.innerHTML=str.displayHtml();
escape()函数
该函数可以处理空格、斜线和其他任何可能影响浏览器的内容,并将它们转换成 Web 可用字符(比如,空格会被转换成 %20,浏览器并不会将其视为空格处理,而是不做更改,将其直接传递到服务器)。之后,服务器会(通常自动)再把它们转换回它们传输后的本来 &面目&。
var url ="nowamagic.php?people="+ escape(people.toJSONString());
request.open("GET", url,true);
request.onreadystatechange = updatePage;
request.send(null);
这种做法的缺点有两个: 在使用 GET 请求发送大块数据时,对 URL 字符串有长度限制。虽然这个限制很宽泛,但对象的 JSON 字符串表示的长度可能超出您的想象,尤其是在使用极其复杂的对象时更是如此。在跨网络以纯文本发送所有数据的时候,发送数据面临的不安全性超出了您的处理能力。
简言之,以上是 GET 请求的两个限制,而不是简单的两个与 JSON 数据相关的事情。在想要发送用户名和姓之外的更多内容,比如表单中的选择时,二者可能会需要多加注意。若要处理任何机密或极长的内容,可以使用 POST 请求。
JSON中如果包含引号或双引号,会破坏JSON的格式。有两种方法可以解决。
在入库的时候可以使用addslashes()函数处理一下字符串,给引号前加上斜杠。被改的字符包括单引号 (')、双引号 (")、反斜线 backslash () 以及空字符NULL。
$text = addslashes($text);
JavaScript的话,可以这样:
function valueReplace(v){
v=v.toString().replace(newRegExp('(["\"])','g'),"\\\"");
var eValue = encodeURI($.trim(valueReplace(e.value)))
--------------------------------------分割线 --------------------------------------
Struts中异步传送XML和JSON类型的数据
Linux下JSON库的编译及代码测试
jQuery 获取JSON数据[$.getJSON方法]
用jQuery以及JSON包将表单数据转为JSON字符串
在C语言中解析JSON配置文件
--------------------------------------分割线 --------------------------------------
本文永久更新链接地址:
相关资讯 & & &
& (03月15日)
& (07/10/:47)
& (04月13日)
& (03月03日)
& (06/15/:09)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款}

我要回帖

更多关于 json字符串有特殊字符 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信