php中利用正则去掉中文全角空格

一开始用$temp = trim($temp, " "); 这种方法,导致trim后的中文字符有乱码

最后

$str = "    广东君孺律师事务所 ";
$str = mb_ereg_replace('^(\s| )*', '', $str);
$str = mb_ereg_replace('(\s| )*$', '', $str);
var_dump($str);

为了学习正则表达式中的

(?=pattern)正向肯定预查,在任何匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,「Windows(?=95|98|NT|2000)」能匹配「Windows2000」中的「Windows」,但不能匹配「Windows3.1」中的「Windows」。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。

$str = ” This line contains\tliberal \r\n use of whitespace.\n\n”;

// 首先去掉头尾空格

$str = trim($str);

// 接着去掉两个空格以上的

$str = preg_replace(’/\s(?=\s)/’, '', $str);

// 最后将非空格替换为一个空格

$str = preg_replace(’/[\n\r\t]/’, ' ', $str);

使用上面的例子可以去掉所有多余的空格。首先使用TRim()去头尾空格,接着用preg_replace()去掉重复的空格。

当中的(?=)表示只匹配后面的空格跟随前面的空格的空格。