mb_substr()需要库支持吧!能说得详细一点吗?还有其他好一点的办法吗?
解决方案 »
- 请恕我愚钝,xmlrpc.inc远程获取和添加wordpress分类
- 急茬!找个又好心又厉害的phper
- 文章每段前留两个空格是如何实现的?
- 谁帮我解释一下这段话是什么意思啊
- 谁有好的像Yahoomail那样的编辑器
- 请教如何调整数组使之符合我需要的数据格式?
- Win2000下已经配好了PHP的调试环境,但是为什么*.php不能正常运行?!
- 谁能给我解释一下md5的用法
- 正则~ 只能由数字、字母或"-"(只能在中间) 组成的~~ help
- 类继承的问题
- 一个功能极其强大的PHP树类 (目录树能做的和windows资源管理器中一模一样)
- 高分问:exec("/bin/tar -xf /usr/local/update/newfile")不执行问题
$str="这个字符好长呀,^_^";
$Short_Str=showShort($str,4);//截取前面4个汉字,结果为:这个字符...
Echo "$Short_Str";
Function csubstr($str,$start,$len)
{
$strlen=strlen($str);
$clen=0;
for($i=0;$i<$strlen;$i++,$clen++)
{
if ($clen>=$start+$len)
break;
if(ord(substr($str,$i,1))>0xa0)
{
if ($clen>=$start)
$tmpstr.=substr($str,$i,2);
$i++;
}
else
{
if ($clen>=$start)
$tmpstr.=substr($str,$i,1);
}
} return $tmpstr;
}
Function showShort($str,$len)
{
$tempstr = csubstr($str,0,$len);
if ($str<>$tempstr)
$tempstr .= "..."; //要以什么结尾,修改这里就可以.return $tempstr;
}
//参 数:$str是原字符串,$len是要取字符串的长度
//功 能:取指定长度的字符串
//返回值:截取后的字符串
function h_substr($str,$len)
{
if(func_num_args() <= 1) return $str;
elseif(func_num_args() == 2)
{
preg_match_all("/[\x80-\xff]?./",$str,$ar);
return join("",array_slice($ar[0],0,($len-1)))."...";
}
elseif(func_num_args() >= 3)
{
$start= func_get_arg(1);
$len = func_get_arg(2);
preg_match_all("/[\x80-\xff]?./",$str,$ar);
return join("",array_slice($ar[0],$start,($len-1)))."...";
}
}
<?php
$str = "I love 中国" ; if(strlen($str) > 10)
{
$str = substr($str, 0, -1) ;
$str .= chr(0)."..." ;
} echo $str ; // 就输出"I love 中..."了
?>而不必装载mb_string扩展库。注意在mb_string函数库中是按字计算的,一个汉字是两个字节,在mb_string中被记为1。所以strlen也要改用mb_strlen。
当然就更不必要使用低效的基于循环判断的自定义函数了
学习……