自己剛才看了一個文檔,初步寫了一個如果有需要的可以改一改,嘿嘿
#cut string
#截取字符數(shù)
function string_cut($string,$length = 100){
if (strlen($string)<= $length){return $string;}
$j=0;
#get cut position
#根據(jù)所過字符長度確定最后字符的位置
$pos=$length-1;
#char of cut pos is not chinese
#截取位置字符非漢字
if($string{$pos}<=128){$cut_string=substr($string,0,$length);}
#check chinese number total
#檢查中文字符的字節(jié)數(shù)
for($i=0; $i < $length; $i++){
if (ord($string{$i}) >; 128){$j++;}
}
#the bytes number of chinese char is even
#中文字符字節(jié)數(shù)為偶數(shù)
if(!($j%2)){
$cut_string=substr($string,0,$length);
}else{
$cut_string=substr($string,0,$length-1);
}
return $cut_string."...";
}
redor 回復(fù)于:2004-11-29 15:14:50排版怎么那么難看了?
HonestQiao 回復(fù)于:2004-11-29 22:32:51這個是標準的函數(shù):
function Short_Text($title,$titlelen=20)
{
$len = strlen($title);
if ($len <= $titlelen):
$title = $title;
else:
$title = substr($title,"0","$titlelen");
$parity= 0;
for($i=0;$i<$titlelen;$i++){
$temp_str=substr($title,$i,1);
if(Ord($temp_str)>;127) $parity+=1;
}
if($parity%2==1) $title=substr($title,0,($titlelen-1))."...";
else $title=substr($title,0,$titlelen)."...";
endif;
return $title;
}
redor 回復(fù)于:2004-11-30 09:01:23原理都一樣的
深空 回復(fù)于:2004-11-30 20:28:19樓上的,那不叫標準。下面這個,嘮叨寫的,用法和substr一樣:
function c_substr($str, $start = 0) {
$ch = chr(127);
$p = array("/[\x81-\xfe]([\x81-\xfe]|[\x40-\xfe])/", "/[\x01-\x77]/");
$r = array("", "");
if(func_num_args() >; 2)
$end = func_get_arg(2);
else
$end = strlen($str);
if($start < 0)
$start += $end;
if($start >; 0) {
$s = substr($str,0,$start);
if($s[strlen($s)-1] >; $ch) {
$s = preg_replace($p,$r,$s);
$start += strlen($s);
}
}
$s = substr($str,$start,$end);
$end = strlen($s);
if($s[$end-1] >; $ch) {
$s = preg_replace($p,$r,$s);
$end += strlen($s);
}
return substr($str, $start, $end);
}