[字号:  ]

截取指定字符长度?

发布时间:2008-11-23 04:05   作者: lsx220   信息来源: PHPChina 开源社区门户
请问下,if(ord(substr($str,$i,1))>0xa0) 这句是什么意思啊,能详细些?

$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;
}

最新回复

d9tx at 2008-11-23 09:53:16

QUOTE:

请问下,if(ord(substr($str,$i,1))>0xa0) 这句是什么意思啊,能详细些?
判断$str $i 字节是否大于0xa0,0x是16进制数(hex),hex a0转换十进制(dec)是160 (hexdec())
如果是大于 160 则按照其是汉字字符高位处理.
这个办法很老了...
php4可以使用mb_substr, php5 可以使用iconv_substr
来截取多字节字符.

[ 本帖最后由 d9tx 于 2008-11-23 09:54 编辑 ]