中文空格这里面有好几种:比如半角全角空格,比如段落符都会显示为空白的,unicode(utf8)编码为C2A0,半角空格
1 大部分用str_replace替换
2 正则 /[\s| ]+/ 注意|后面的跟的是全角空格
3 mb中的正则替换也可以试试
4 去头尾用trim
去除c2a0分析
$str=' 中华人 民 共和 国 ';
$str= preg_replace('/[(\xc2\xa0)|\s]+/', '', $str); //拿别人的,这种方式把独立的c2与a0替换了 危险
$str=preg_replace('/(\xc2\xa0|\s)+/',' ',$str); //这种连续的替换 应当是安全的 项目准备用它
$str=preg_replace('/[\x{c2a0}\s]+/u',' ',$str); //这种方式应当也是行的结果对了,但用 var_dump(preg_match('/[\x{c2a0}+]/u',$str)); 测试不通过
/**
* 多个空格合成一个后trim
* @param string $str
* @return string
*/
function spacesToOne($str){
return trim(preg_replace('/(\s| |\xc2\xa0)+/',' ',$str));
}
// 首先去掉头尾空格
$str = trim($str);
// 多余的空白符替换成一个空格
preg_replace('/[\s]+/',' ', $keywords[$k])
// 接着去掉两个空格以上的
$str = preg_replace(’/\s(?=\s)/’, '', $str);
当中的(?=)表示只匹配后面的空格跟随前面的空格的空格。