php 去除变态空格字符方法,空格trim不掉问题解决思路
前言:今天过滤一段文本,后面有2个空格,用trim去不掉,用preg_match也去不掉,去网上翻阅了无数的方法,终于找到了非常好的一个解决方法。该文章来源于https://my.oschina.net/fffddgx/blog/196376 ,思路是 ,首先将字符分隔开,str_split, 然后循环每个字节查看他的编码,ord();
trim函数
以php的trim 函数为例: 去除字符串首尾处的空白字符(或者其他字符)
string trim ( string $str [, string $charlist ] ) 第二个参数可以指定要trim掉的字符
如果不指定第二个参数,trim() 将去除这些字符:
" " (ASCII32(0x20)),普通空格符。
"\t" (ASCII9(0x09)),制表符。
"\n" (ASCII10(0x0A)),换行符。
"\r" (ASCII13(0x0D)),回车符。
"\0" (ASCII00x00)),空字节符。
"\x0B" (ASCII11(0x0B)),垂直制表符。
但是空白字符并不只是这些字符。比如全角空格(ascii:227)和一些控制字符,乱码字符等等。全角空格这种情况是比较多的情况,如果确定空白字符是全角空格引起的可以直接
$value = str_replace("全角空格"," ",$value);
这样可以解决大部分问题。如果还是解决不了,恭喜你,你越到了变态数据。
思路
对于变态数据可以考虑用下面的方法处理
1、分割字符串,将字符串分割成以一个字节为单位的字符组: str_split($str)
2、查看空白字符编码。(比如遇到一个变态字符串前面的空格字符是:194 160 194 160,基本可以确定是这个字符的问题)
3、替换掉空白编码 。比如用正则函数:
$value = preg_replace("/^[\s\v".chr(194).chr(160)."]+/","", $value); //替换开头空字符
$value = preg_replace("/[\s\v".chr(194).chr(160)."]+$/","", $value); //替换结尾空字符
例子
如下程序:
//比如字符串: “ abc”(前面是两个全角空格)
$str = " abc";
$sArray = str_split($str);
foreach ($sArray as $s){
var_dump(ord($s));
}
结果:
int(227)
int(128)
int(128)
int(227)
int(128)
int(128)
int(97)
int(98)
int(99)
发现a(97)前有2轮
int(227)
int(128)
int(128)
断定这就是一个utf-8的空白字符,下面的程序去掉这个字符就可以
$str = preg_replace("/^[\s\v".chr(227).chr(128)."]+/","", $str); //替换开头空字符
$str = preg_replace("/[\s\v".chr(227).chr(128)."]+$/","", $str); //替换结尾空字符 var_dump($str);
结果:string(3) "abc",成功去掉该变态空白字符。
php 去除变态空格字符方法,空格trim不掉问题解决思路的更多相关文章
- jquery去除字符串首尾空格的方法:$.trim()
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 【转载】C#使用Trim方法去除字符串前后的所有空格
在C#语言程序开发过程中,很多时候需要对字符串对象的前后空格进行去除,此时就需要使用到Trim()方法来实现这个功能,Trim()方法可以快速去除字符串前端和后端的所有空格. 例如有个字符:strin ...
- oracle中如何对字符串进行去除空格的方法
oracle中如何对字符串进行去除空格的方法 今天学习了一下oracle中如何对字符串进行去除空格的方法,这里总结一下.了解到的方法主要有两种:Trim函数以及Replace函数.下面我详细的介绍一下 ...
- Java中去除字符串中空格的方法
昨天写了一个关于Excel文件处理的脚本,在字符串匹配功能上总是出现多余不正确的匹配,debug调试之后,发现一个坑. ------->代码中字符串使用了replaceAll()方法,去除了所有 ...
- Python中常见字符串去除空格的方法总结
Python中常见字符串去除空格的方法总结 1:strip()方法,去除字符串开头或者结尾的空格>>> a = " a b c ">>> a.s ...
- Python关于去除字符串中空格的方法
Python关于去除字符串中空格的方法 在编写程序时我们经常会遇到需要将字符串中的空格去掉的情况,通常我们可以使用下面几种解决方法: 1.strip()方法:该方法只能把字符串头和尾的空格去掉,但是不 ...
- JavaScript中去除字符串空格的方法
语法 string.trim() 参数值 无 返回值 类型:string 描述:返回移除头尾空格的字符串 技术细节 JavaScript版本: ECMAScript 5 去除字符串左右两端的空格,在v ...
- python 中去除空格的方法
python 中去除空格的方法: def trim(s): l=[] for i in s: if i!=' ': l.append(i) return ''.join(l) 其中可以使用下面的 '' ...
- 微信小程序自动去除input空格的方法
当用户输入账号或者密码的时候,可能会有输入空格的情况,但是实际需要是不能够有空格的,所以我们要做一个去除空格,并且适应所有input的name参数的方法,下面请看源码: wxml: <input ...
随机推荐
- linux如何添加telnet服务
一.安装telnet 1.检测telnet-server的rpm包是否安装 [root@localhost ~]# rpm -qa telnet-server 若无输入内容,则表示没有安装.出于安全考 ...
- FZU 2150 fire game (bfs)
Problem 2150 Fire Game Accept: 2133 Submit: 7494Time Limit: 1000 mSec Memory Limit : 32768 KB ...
- python 接口自动化测试(五)其他-认证&代理&超时配置
有了前面几节的介绍,基本的接口测试是可以满足了.本节一些其它的高级技巧: 一.认证 1.基本认证: # -*- coding:utf-8 -*- import requests url = " ...
- TestNG 框架的运用
TestNG这个测试框架可以很好的和基于Selenium的web自动化测试结合在一起,实现把我们写好的自动化测试用例以自定义顺序执行.下面分为十二步来对TestNG测试框架进行总结,包括环境的部署,从 ...
- arch 相关软件及脚本
安装 arch 脚本 sudo pacman -S arch-install-scripts 安装 ssh 并开启服务 sudo pacman -S open-ssh vim /etc/ssh/ss ...
- 9、socket.io,websocket 前后端实时通信,(聊天室的实现)
websocket 一种通信协议 ajax/jsonp 单工通信 websocket 全双工通信 性能高 速度快 2种方式: 1.前端的websocket 2.后端的 socket.io 一.后端so ...
- 【持续集成】GIT+jenkins+sonar——GIT
一.GIT基础 1.1 git简介 linus用C语言编写 2005年诞生 分布式管理系统 速度快.适合大规模.跨地区多人协同开发 1.2 本地管理.集中式.分布式 1.3 git安装 #CentOS ...
- requirejs配置问题
<script src="lib/requirejs/require.js " data-main="js/main.js"> </scrip ...
- 用友U8存货分类通过DataTable生成EasyUI Tree JSON
<%@ WebHandler Language="C#" Class="InventoryClass" %> using System; using ...
- python全栈开发 * 线程锁 Thread 模块 其他 * 180730
一,线程Thread模块1.效率更高(相对于进程) import time from multiprocessing import Process from threading import Thre ...