如何去除含特殊字符的空白字符?PHP代码处理后仍有空白
特殊空白字符去除问题
尝试用以下代码去除字符串中的特殊空白字符,但处理后仍有空白残留:
$city_name = " Hải Phòng"; $city_name = trim(preg_replace('/\s+/', ' ', $city_name));
原因是这个空白属于非标准Unicode空白字符(比如不间断空格、全角空格),普通正则\s仅匹配标准空格、制表符、换行符,无法覆盖这类特殊空白。
解决办法是使用Unicode属性类匹配所有空白类字符,修改代码如下:
// 匹配所有Unicode空格分隔符,替换为单个空格后修剪 $city_name = trim(preg_replace('/\p{Zs}+/u', ' ', $city_name));
如果需要覆盖所有类型的Unicode空白(包括换行、制表符等),可以用:
$city_name = trim(preg_replace('/\p{White_Space}+/u', ' ', $city_name));
\p{Zs}:匹配所有Unicode定义的空格分隔符u修饰符:开启正则的Unicode模式,确保正确识别特殊Unicode字符
内容的提问来源于stack exchange,提问作者Hai Truong IT
相关产品推荐
相关产品推荐

