Matches a single white space character, including space, tab, form feed, line feed. Equivalent to [ \f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff].
For example, /\s\w*/ matches ' bar' in "foo bar."
其中\u2028表示行分隔符,\u2029表示段落分隔符,\ufeff表示字节顺序标记
字节顺序标记: 即BOM(byte-order mark)。最初,字符U+FEFF如果出现在字节流的开头,则用来标识该字节流的字节序——是高位在前还是低位在前;如果它出现在字节流的中间,则表达为该字符的原义——(ZERO WIDTH NO-BREAK SPACE零宽度无断空白)。从Unicode 3.2开始,U+FEFF只能出现在字节流的开头,且只能用于标识字节序,就如它的别名——字节序标记——所表示的意思一样;除此以外的用法已被舍弃。取而代之的是,使用U+2060来表示零宽度不中断空格。
说了那么多废话,下面给完整代码
function trim_blank($str){
$partern = '/[\x{00a0}\x{1680}\x{2000}-\x{200a}\x{2028}\x{2029}\x{202f}\x{205f}\x{3000}\x{feff}\x{2060}\x{3164}]/u';
return preg_replace($partern, '', $str);
}
(此处已添加小程序,请到今日头条客户端查看)