thinkphp中的特殊字符处理

2 篇文章 0 订阅

根据最近项目整理 -- 有些特殊字符的存储展示会有问题,解决方案如下:

字符编码:

" 经过ThinkPHP的I 转换为 "
< &lt;
> &gt;
& &amp;
如果用 模板变量直接引用则可以还原,但是用js赋值则不能。js还原函数:
function restore_str_js(str){
var str =  str.replace('&quot;','"');
str = str.replace('&lt;','<');
str = str.replace('&gt;','>');
str = str.replace('&amp;','&');
str = str.replace('char(10)','\r\n');//将换行符 还原展示于页面
return str;
}




换行符的处理:
textarea 有时候用户会插入换行符,但是不加处理插入到数据库中的时候会出错。
php处理之后存入数据库:
//将换行符替换为一个特殊标记,页面展示时还原
function filter_enter($str){
    $str = str_replace(array("\r\n", "\r", "\n"), 'char(10)', $str); //把用户输入的回车替换成一个特殊字符 //textarea
    return $str;
}


若为js读取:str = str.replace('char(10)','\r\n');//将换行符 还原展示于页面
若为模板变量: 
//模板直接引用变量时 转换成换行符
function restore_enter($str){
    $str = str_replace('char(10)','<br/>',$str);//将换行符 还原展示于页面
    return $str;
}




\反斜杠的处理:
I函数对\不加处理,但是在sql查询语句中就会出错。正确的sql语句:
SELECT * FROM `a` where Word like '%\\';   结果:ASPERT\
即1个反斜杠\要在查询之前转成2个反斜杠\\:
//将 \一个反斜杠转化为 \\两个反斜杠,用于数据库查询
function filter_str($str){
    $str = str_replace("\\","\\\\",$str);
    return $str;
}


如果数据库中的\是原样存储的,直接读取赋给模板变量,展示也是有问题的。
//将\反斜杠转换为&#92;(html实体)用于展示于页面
function restore_str($str){
    $str = str_replace("\\","&#92;",$str);
    return $str;
}


如果用js读取:
 php: $this->assign('name', filter_str($name));   //为了反斜杠  不然就一个反斜杠,后面和字符连起来转义乱码
 js:   var  name = "{$name}";
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值