老话重提--PHP中汉字截取

王朝php·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

似乎这种问题永远都有人在论坛上面问 以前人们用的函数都差不多 今天看见了PHP专栏版主唠叨的方法 简洁的很

首先我们看看以前应用的两种方法

---------------------------------------------------------------

function msubstr($str,$start,$len) {

$strlen=$start+$len;

for($i=0;$i<$strlen;$i++) {

if(ord(substr($str,$i,1))>0xa0) {

$tmpstr.=substr($str,$i,2);

$i++;

} else

$tmpstr.=substr($str,$i,1);

}

return $tmpstr;

}

-------------------------------------

<?PHP

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

}

再来看看唠叨的方法 怎么样,简洁吧?

$len = 19;

$text = "怎么将新闻的很长的标题只显示前面一些字,后面用.....来代替?";

echo strlen($text)<=$len ? $text : (substr($text,0,$len).chr(0)."....");

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航