1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| echo rawurlencode('河北省');//%E6%B2%B3%E5%8C%97%E7%9C%81 echo rawurlencode('广东省');//%E5%B9%BF%E4%B8%9C%E7%9C%81 echo rtrim('河北省', '省');//河北 echo rtrim('广东省', '省');//广�� //省的十六制作表示是e7 9c 81,而东的十六进制表示是e4 b8 9c,都出现了9c,哦~正因为是rtrim,所以rtrim('广东省', '省')的时候把“东”的十六进制表示的最后一位也被trim掉了。同理rtrim('河北省', '省')不存在此问题
echo trim_cn('广东省','省');//广东
function trim_cn($str, $trim, $charset = 'UTF-8') { $len = mb_strlen($str, $charset); if (!$len) return;
$t1 = $t2 = false;$o=$l=0; for($i=0;$i<$len;$i++) { $str1 = mb_substr($str, $i, 1, $charset); $str2 = mb_substr($str, $len-$i-1, 1, $charset); if($str1 == $trim && !$t1) $o++; else $t1 = true; if($str2 == $trim && !$t2) $l++; else $t2 = true; } return mb_substr($str, $o, ($len-$l-$o), $charset);; }
|