php 截取UTF-8中文字符串问题
发布网友
发布时间:2022-04-26 21:19
我来回答
共4个回答
热心网友
时间:2022-04-22 10:59
substr()函数可以 分割文字,但要分割的文字如果包括中文字符往往会遇到问题,这时可以用mb_substr()/mb_strcut这个函数,mb_substr() /mb_strcut的用法与substr()相似,只是在mb_substr()/mb_strcut最后要加入多一个参数,以设定字符串的编码,但是 一般的服务器都没打开php_mbstring.dll,需要在php.ini在把php_mbstring.dll打开。
mb_substr是按字来切分字符,而mb_strcut是按字节来切分字符,但是都不会产生半个字符的现象……
所以,把$str=substr($text,0,$k);替换为 $str=mb_substr($text,0,$k,'UTF-8');就ok了
热心网友
时间:2022-04-22 12:17
试一试这个函数:
//function :截取中文字符
function zh_substr($string, $start, $length)
{
if(strlen($string)>$length){
$str=null;
$len=$start+$length;
for($i=$start;$i<$len;$i++){
if(ord(substr($string,$i,1))>0xa0){
//ord()函数返回字符的 ASCII (美国国家标准交换码) 序数值。本函数和 chr() 函数相反。
$str.=substr($string,$i,2);
$i++;
}else{
$str.=substr($string,$i,1);
}
}
return $str.'...';
}else{
return $string;
}
}
热心网友
时间:2022-04-22 13:51
无法截取utf-8字符串,因为utf-8字符串,字节数不固定
热心网友
时间:2022-04-22 15:43
登录后再说一遍,增加积分,无法截取utf-8字符串,因为utf-8字符串,字节数不固定