php 截取UTF-8中文字符串问题 10
正常的话UTF-8汉字是占据三个字节字母和数字是一个字节我想写个方法比如$str="我日1啊";给这个方法的参数为4的话就截取我日5就我日1我自己写了个方法functio...
正常的话UTF-8汉字是占据三个字节 字母和数字是一个字节
我想写个方法 比如$str="我日1啊";
给这个方法的参数为4的话就截取我日 5就我日1
我自己写了个方法
function utf_substr($text,$length){
$k=0;
for($i=0;$i<$length;$i++){
$z=mb_substr($text,$i,1,'UTF-8');
if(ord($z)>=128){
//echo $z;
$k+=3;
$i++;
echo "+3";
}
else{
$k+=1;
echo "+1";
}
}
$str=substr($text,0,$k);
// echo $k;
return $str;
}
$str="我服了啊abc";
echo utf_substr($str,6);
现在又问题 求帮我改改 展开
我想写个方法 比如$str="我日1啊";
给这个方法的参数为4的话就截取我日 5就我日1
我自己写了个方法
function utf_substr($text,$length){
$k=0;
for($i=0;$i<$length;$i++){
$z=mb_substr($text,$i,1,'UTF-8');
if(ord($z)>=128){
//echo $z;
$k+=3;
$i++;
echo "+3";
}
else{
$k+=1;
echo "+1";
}
}
$str=substr($text,0,$k);
// echo $k;
return $str;
}
$str="我服了啊abc";
echo utf_substr($str,6);
现在又问题 求帮我改改 展开
4个回答
展开全部
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了
mb_substr是按字来切分字符,而mb_strcut是按字节来切分字符,但是都不会产生半个字符的现象……
所以,把$str=substr($text,0,$k);替换为 $str=mb_substr($text,0,$k,'UTF-8');就ok了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
试一试这个函数:
//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;
}
}
//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;
}
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-03-29
展开全部
无法截取utf-8字符串,因为utf-8字符串,字节数不固定
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
登录后再说一遍,增加积分,无法截取utf-8字符串,因为utf-8字符串,字节数不固定
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询