请问如何实现长文字的缩写功能. 一般来说,GB2312汉字的前后两个字节的ASCII值都不会小于 128,而英文字符正相反,只需要判断这个就可以了。不过,你不要想用这个办法判断其他大字库的汉字编码,比如说 GBK。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用这个。接分ing... :)$srt = substr($str,"0","20").chr(0);终于抢到一贴了,以前一朋友靠诉偶的。。 /* 函数 sub_str($text, $length)** 功能 从文本中截取指定长度字符串,考虑了对中文的处理** 参数 $text 要截取的文本** 参数 $length 要截取的字符串长度*/function sub_str($text, $length){ for ($i=0; $i<$length; $i++) { $chr = substr($text, $i, 1); if (ord($chr) > 0x80)//字符是中文 { $length++; $i++; } } $str = substr($text, 0, $length); return $str;} substr()函数中文版(终极完美版) function msubstr($str,$start,$len)//字符位置从0开始 { $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中一个控制字符串输出的函数 // php 中 一个控制字符串输出的函数(中英文),每行显示多少字数,避免英文的影响 // $str 字符串 // $len 每行显示的字数(汉字×2) function rep($str,$len) { $strlen=strlen($str); $i=0; $finstr=""; $pos=0; while($i<$strlen) { $s1=substr($str,$i,1); $s2=ord($s1); if($s2>0xa0){ $finstr.=substr($str,$i,2); $pos+=2; $i+=2; }else{ switch($s2){ case 13: $finstr.="<BR>"; $pos=0; break; case 10: $pos=0; break; case 32; $finstr.=" "; $pos++; break; default: $finstr.=htmlspecialchars($s1); $pos++; break; } $i++; } //if if($pos>=$len){ $finstr.="<BR>"; $pos=0; } } //while return $finstr; } 这个问题问的人太多了!function substrex($str,$len){ $str = (string)$str; $len = (int)$len; $strlen = strlen($str); if($len>$strlen) $len = $strlen; $i = 0; $fixlen = 0; while($i<$len){ $chr = $str[$i]; $i++; if(ord($chr)<0x80) $fixlen++; //128D elseif($i<$len){ $i++; $fixlen += 2; } } $cutstr = substr($str,0,$fixlen); if ($str <> $cutstr) { $cutstr .= '...'; } return $cutstr;} php 调用 applete 方法 模板是gbk编码,php程序是utf-8,数据库是gbk.从程序里直接传输到数据库会乱码,请问如何解决, 有人研究PHPbb,DISCUZ等网站的代码,怎么没人研究PHPMYADMIN代码么? 类似CSDN的短消息功能模块,怎么设计比较好 请教关于隐藏的iframe的问题,希望大虾指点! 小菜鸟我想了半天的问题 php中如何取得网页源代码? 二分法查找顺序数组出现的问题 关于生成静态页面的问题 php的图库添加问题? 拿一半的财产求一个问题! 初学者请教:一般的网站的都用.shtml文件,这是什么技术
** 功能 从文本中截取指定长度字符串,考虑了对中文的处理
** 参数 $text 要截取的文本
** 参数 $length 要截取的字符串长度
*/
function sub_str($text, $length)
{
for ($i=0; $i<$length; $i++)
{
$chr = substr($text, $i, 1);
if (ord($chr) > 0x80)//字符是中文
{
$length++;
$i++;
} }
$str = substr($text, 0, $length);
return $str;
}
function msubstr($str,$start,$len)//字符位置从0开始
{
$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 字符串
// $len 每行显示的字数(汉字×2)
function rep($str,$len) {
$strlen=strlen($str);
$i=0;
$finstr="";
$pos=0;
while($i<$strlen)
{
$s1=substr($str,$i,1);
$s2=ord($s1);
if($s2>0xa0){
$finstr.=substr($str,$i,2);
$pos+=2;
$i+=2;
}else{
switch($s2){
case 13:
$finstr.="<BR>";
$pos=0;
break;
case 10:
$pos=0;
break;
case 32;
$finstr.=" ";
$pos++;
break;
default:
$finstr.=htmlspecialchars($s1);
$pos++;
break;
}
$i++;
} //if
if($pos>=$len){
$finstr.="<BR>";
$pos=0;
}
} //while
return $finstr;
}
function substrex($str,$len)
{
$str = (string)$str;
$len = (int)$len; $strlen = strlen($str);
if($len>$strlen) $len = $strlen; $i = 0;
$fixlen = 0;
while($i<$len){
$chr = $str[$i];
$i++;
if(ord($chr)<0x80) $fixlen++; //128D
elseif($i<$len){
$i++;
$fixlen += 2;
}
}
$cutstr = substr($str,0,$fixlen);
if ($str <> $cutstr)
{
$cutstr .= '...';
}
return $cutstr;
}