页面字符集big5,我想要用php获取字符串(字符串有字母,数字,中文等)的长度。字母,数字,符号,中文(包括简体和繁体中文)都算一个字符。谢谢!
å¨PHPä¸ä¸é¨çmb_substråmb_strlenå½æ°ï¼å¯ä»¥å¯¹ä¸æè¿è¡æªåå计ç®é¿åº¦ï¼ä½æ¯ï¼ç±äºè¿äºå½æ°å¹¶éPHPçæ ¸å¿å½æ°ï¼æ以ï¼å®ä»¬å¸¸å¸¸æå¯è½æ²¡æå¼å¯ãè¦å¨php.iniä¸å¼å¯å³å¯ãè·åé¿åº¦å®ä¾ï¼1 ï¼utf-8ç¯å¢ä¸ä½¿ç¨
header('Content-type:text/html;charset=utf-8');2ï¼æ¯ægb2312,gbk,utf-8,big5 ä¸ææªåæ¹æ³
/*
* ä¸ææªåï¼æ¯ægb2312,gbk,utf-8,big5
*
* @param string $str è¦æªåçå串
* @param int $start æªåèµ·å§ä½ç½®
* @param int $length æªåé¿åº¦
* @param string $charset utf-8|gb2312|gbk|big5 ç¼ç
* @param $suffix æ¯å¦å å°¾ç¼
*/
public function csubstr($str, $start=0, $length, $charset="utf-8", $suffix=true)
{
if(function_exists("mb_substr"))
{
if(mb_strlen($str, $charset) <= $length) return $str;
$slice = mb_substr($str, $start, $length, $charset);
}
else
{
$re['utf-8'] = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";
$re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";
$re['gbk'] = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";
$re['big5'] = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";
preg_match_all($re[$charset], $str, $match);
if(count($match[0]) <= $length) return $str;
$slice = join("",array_slice($match[0], $start, $length));
}
if($suffix) return $slice."â¦";
return $slice;
}