php trim()函数可去掉字符串前后的空字符。通常情况下,trim() 将去除这些字符:
" " (ASCII32(0x20)),普通空格符。
"\t" (ASCII9(0x09)),制表符。
"\n" (ASCII10(0x0A)),换行符。
"\r" (ASCII13(0x0D)),回车符。
"\0" (ASCII00x00)),空字节符。
"\x0B" (ASCII11(0x0B)),垂直制表符。
但是空字符如全角空格(ascii:227)和一些控制字符,乱码字符,不可见,尤其是在中文字符串,尤其是一些变量字符,用strlen()计算长度总是多于原始中文。
此时,需要找出这些字符:
如变量值 $a为草莓,但strlen($a)长度为12,而strlen("草莓")为6
利用
$tArr = str_split($a);
foreach ($tArr as $s){
var_dump(ord($s));
}
在ASCII码int(232) int(141) int(137) int(232) int(142) int(147)前多了
int(239)int(187)int(191)
$htStr = preg_replace("/^[\s\v".chr(239).chr(187).chr(191)."]+/","", $htStr); //替换开头空字符
$htStr = preg_replace("/[\s\v".chr(239).chr(187).chr(191)."]+$/","", $htStr); //替换结尾空字符
替换这些字符后正常。