讨论:文字截取问题? 连接php_mbstring扩展库,使用mb_substr函数自己写一个也可以,这样的代码到处都有 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 给你个涵数function TrimChinese($str,$len){ $r_str=''; $i=0; while ($i<$len){ $ch=substr($str,$i,1); if(ord($ch)>0x80) $i++; $i++; } $r_str=substr($str,0,$i); return $r_str;} $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; } //参数说明: $oStr:要截取的字符串 $oLen:要截取多长 $oSplt:用什么分隔 $oFlag:0-仅截取$oLen指定的长度后加上分隔符($oSplit) 1-在字符串每隔$oLen长度后加上一个$oSpltfunction Strg_Chunk($oStr,$oLen,$oSplt,$oFlag=0) { $LnLen=0; $getStr=""; while ($oStr) { if (ord(substr($oStr,0,1))>127) { $getStr.=substr($oStr,0,2); $oStr=substr($oStr,2,strlen($oStr)); $LnLen+=2; }else{ $getStr.=substr($oStr,0,1); $oStr=substr($oStr,1,strlen($oStr)); if (ord(substr($oStr,0,1))==10 || ord(substr($oStr,0,1))==13) { $LnLen=0; }else { $LnLen++; } } if ($LnLen>=$oLen) { $LnLen=0; $getStr.=$oSplt; if ($oFlag==0) { break; } } } return $getStr;} http://expert.csdn.net/Expert/topic/2066/2066774.xml?temp=.3540766 function m_substr($str,$start,$len){ preg_match_all("/[\\x80-\\xff]?./",$str,$arr); return @implode(array_slice($arr[0],$start,$len),"");} 问一个Js的语法,在PHP该怎样表示? ***新手求教***10月22日问题之[猜数字游戏、phpinfo.php设置] 关于从数据库中查询记录并显示问题 Apache无法loadXML php 模拟客户端IP的问题 请问php开源项目的源代码问题????? php和mysql连接问题 关于变量的问题(急) 请高手们,谁用PHP编过远程访问程序。 CI框架下用存储过程后不能再进行其他查询 如何实现sql 2000 数据库的备份? 怎么我在win2kserver配置php都配置不成功,老是需要密码
function TrimChinese($str,$len){
$r_str='';
$i=0;
while ($i<$len){
$ch=substr($str,$i,1);
if(ord($ch)>0x80) $i++;
$i++;
}
$r_str=substr($str,0,$i);
return $r_str;
}
$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;
}
$oStr:要截取的字符串
$oLen:要截取多长
$oSplt:用什么分隔
$oFlag:0-仅截取$oLen指定的长度后加上分隔符($oSplit) 1-在字符串每隔$oLen长度后加上一个$oSplt
function Strg_Chunk($oStr,$oLen,$oSplt,$oFlag=0) {
$LnLen=0;
$getStr="";
while ($oStr) {
if (ord(substr($oStr,0,1))>127)
{
$getStr.=substr($oStr,0,2);
$oStr=substr($oStr,2,strlen($oStr));
$LnLen+=2;
}else{
$getStr.=substr($oStr,0,1);
$oStr=substr($oStr,1,strlen($oStr));
if (ord(substr($oStr,0,1))==10 || ord(substr($oStr,0,1))==13) {
$LnLen=0;
}else {
$LnLen++;
}
}
if ($LnLen>=$oLen) {
$LnLen=0;
$getStr.=$oSplt;
if ($oFlag==0) { break; }
} }
return $getStr;
}
preg_match_all("/[\\x80-\\xff]?./",$str,$arr);
return @implode(array_slice($arr[0],$start,$len),"");
}