码迷,mamicode.com
首页 > Web开发 > 详细

【php】关于trim,rtrim,ltrim,substr 的字符串切割导致 json,_encode无法 识别数据的问题

时间:2019-03-05 11:38:53      阅读:293      评论:0      收藏:0      [点我收藏+]

标签:lock   class   函数   避免   算法   导致   encode   无法   问题   

示例

<?php
$a = rtrim('南宁 、',' 、');
echo $a;
//输出  南??
echo json_encode($a);
//输出空白
$b = ['name'=>$a];
echo json_encode($b);
//输出 json_encode(): Invalid UTF-8 sequence in argument 不同版本可能不一样,也有可能空白
?>

原因

网上搜的还有个星期二问题相关的,都是切割字符串引起的,在UTF8中一个中文3个字节,GB系列的是2个字节,而英文一个字母是一个字节,切割的时候,如果碰到中文或者中文系列的符号,会产生切割一个3个字节的中文切割成一半的情况,造成无法识别的问题

处理方法

可以采用mb_substr等系列的方法或者优化算法,尽量避免使用这些切割函数,或者统一使用英文字符

【php】关于trim,rtrim,ltrim,substr 的字符串切割导致 json,_encode无法 识别数据的问题

标签:lock   class   函数   避免   算法   导致   encode   无法   问题   

原文地址:https://www.cnblogs.com/china-flint/p/10475287.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!