有一次处理数据时,需要去掉数据中的空数据,即下图:

使用去空格的方法:trim()函数、正则表达式匹配:
$arr = preg_replace('/^\s*|\s*$/', '', $arr); //正则匹配,去掉字符串两端空格
但是都不能去掉
ctype_space()函数判断,返回的是false,正常空格的话返回为true,就感觉很奇怪,看着明明是空格呀
后来使用ord()函数,打印其ascii码,打印结果为int(194)
打印正常空格的ascii码为int(32),所以其不是一般的空格
查询了资料,发现有类似情况的--出现异常空格,好像是编码转换造成的,文章链接为:
https://www.cnblogs.com/wangyuyu/p/3711887.html
最后,使用str_replace(chr(194),'',$arr) 把异常空格去掉转换成空数据,然后使用array_filter()函数去掉组数中的空数据:
$arr = str_replace(chr(194),'',$arr);
$arr = array_filter($arr);
小提示:如果遇到不清楚的数据,可以打印其ASCII值看看
ord()函数:返回字符串的首个字符的 ASCII 值
chr()函数:将ASCII码值转化为字符串
网友评论