php中文处理函数
<?php /* php使用ISO-8859-1处理字符串,也就是以单字节处理字符串。中文码属于多字节字符,在使用substr, strlen,str_peplace等函数时很容易产生错误,处理中文特殊操作,必须使用一组中文处理函数。下面是 GBK的substr,strlen操作函数,前者并不像php的substr一样可以使用负数作为start,lenght.希望大家 来不断完善这些函数,达到高效实用的程度。 */ //gbk str handle function gbk_substr(&$str, $start, $length = - 1) { if ($length == 0) return ""; if ($start < 0) $start = 0; for ($i = 0; $i < $start; $i++) { if (ord(substr($str, $i, 1)) >= 0x81) { $start++; $i++; } } if ($start > gbk_strlen($str)) return ""; $ss = ""; if ($length == - 1) { $ss = substr($str, $start); } else { echo "leghth=" . $length . " "; for ($i = $start; $i < $start + $length; $i++) { if (ord(substr($str, $i, 1)) >= 0x81) { $ss.= substr($str, $i, 2); $length++; $i++; } else { $ss.= substr($str, $i, 1); } } } return $ss; } function gbk_strlen(&$str) { $len = strlen($str); $l = 0; for ($i = 0; $i < $len; $i++) { if (ord(substr($str, $i, 1)) >= 0x81) $i++; $l++; } return $l; } function gb2312_strlen(&$str) { $len = strlen($str); $l = 0; for ($i = 0; $i < $len; $i++) { if (ord(substr($str, $i, 1)) >= 0xa1) $i++; $l++; } return $l; } ?>
本文地址:http://www.phprm.com/function/1ada17d33ef919fccf7496a55d1912ee.html
转载随意,但请附上文章地址:-)