2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > PHP截取字符串长度

PHP截取字符串长度

时间:2024-06-06 16:38:45

相关推荐

PHP截取字符串长度

我们经常会遇到需要截取字符串(含中文汉字)长度的情况,比如标题显示不能超过多少字符,超出的长度用…表示,以下函数可以满足你的需求。

代码如下:

/* Utf-8、gb2312都支持的汉字截取函数 cut_str(字符串, 截取长度, 开始长度, 编码); 编码默认为 utf-8 开始长度默认为 0 */ function cutStr($string, $sublen, $start = 0, $code = 'UTF-8'){ if($code == 'UTF-8'){ $pa = "/[x01-x7f]|[xc2-xdf][x80-xbf]|xe0[xa0-xbf][x80-xbf]|[xe1-xef][x80-xbf][x80-xbf]|xf0[x90-xbf][x80-xbf][x80-xbf]|[xf1-xf7][x80-xbf][x80-xbf][x80-xbf]/"; preg_match_all($pa, $string, $t_string); if(count($t_string[0]) - $start > $sublen) return join('', array_slice($t_string[0], $start, $sublen))."..."; return join('', array_slice($t_string[0], $start, $sublen)); }else{ $start = $start*2; $sublen = $sublen*2; $strlen = strlen($string); $tmpstr = ''; for($i=0; $i<$strlen; $i++){ if($i>=$start && $i<($start+$sublen)){ if(ord(substr($string, $i, 1))>129){ $tmpstr.= substr($string, $i, 2); }else{ $tmpstr.= substr($string, $i, 1); } } if(ord(substr($string, $i, 1))>129) $i++; } if(strlen($tmpstr)<$strlen ) $tmpstr.= "..."; return $tmpstr; } }

使用方法如下:

$str = "jQuery插件实现的加载图片和页面效果"; echo cutStr($str,16);

/*** 中文字符串截取* @param $str* @param int $start @起始位置* @param $length @截取长度* @param string $ending @结尾符* @return string*/private static function stringSubstr($str, $start=0, $length, $ending=''){//$str = htmlspecialchars_decode($str); //实体字符转为html$str = trim(strip_tags($str)); //去除html字符$str = preg_replace("/\s||&nbsp;/", "", $str);$mb_str = mb_substr($str, $start, $length, 'utf-8');if($length < method::abslength($str)){$output = $mb_str.$ending;}else{$output = $mb_str;}return $output;}

/*** 可以统计中文字符串长度的函数* @param $str @要计算长度的字符串* @return int @计算长度类型,0(默认)表示一个中文算一个字符,1表示一个中文算两个字符*/private static function abslength($str){if(empty($str)){return 0;}if(function_exists('mb_strlen')){return mb_strlen($str,'utf-8');} else {preg_match_all("/./u", $str, $ar);return count($ar[0]);}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。