PHP截取字符串的指定长度(兼容中英文)的方法

  •   
  • 3978
  • PHP
  • 0
  • super_dodo
  • 2015/10/28

在对一些新闻简介详情等提取的时候,需要去除文章的HTML标签以及空格等。这样提取或者截取指定长度的字符串来展示。有以下三种方法,请选择性的使用。

//截取字符串的长度 如果长度大于给定的值则增加...
public function _mb_substr($str, $len=10){
$str_len = mb_strlen($str, 'UTF-8'); //此处传入编码,建议使用utf-8
$str = preg_replace("#<.+?>#is","",$str); //去除HTML标签
$str = preg_replace("# #is","",$str); //去除
if($str_len > $len){
$new_str = mb_substr($str, '0', $len,'utf-8') . '...';
}else{
$new_str = $str;
}
return $new_str;
}

//截取字符串的长度 后面不增加...
public function _mb_substr2($str, $len=10){
$str_len = mb_strlen($str, 'UTF-8'); //此处传入编码,建议使用utf-8
$str = preg_replace("#<.+?>#is","",$str); //去除HTML标签
$str = preg_replace("# #is","",$str); //去除
if($str_len > $len){
$new_str = mb_substr($str, '0', $len,'utf-8');
}else{
$new_str = $str;
}
return $new_str;
}

//截取规定长度的内容
public function subhtmlstr($str,$len){
$str=preg_replace("#<.+?>#is","",$str);
if($len>=strlen($str)){ return $str; }
$s="";
for($i=0;$i<$len;$i++){ $temp_str=substr($str,0,1); if(ord($temp_str) > 127){ //ord() 函数返回字符串第一个字符的 ASCII 值。
$i++;
if($i<$len){ $new_str[]=substr($str,0,3); $str=substr($str,3); } }else{ $new_str[]=substr($str,0,1); $str=substr($str,1); } } return join($new_str).'...'; } [/php]

回首向来萧瑟处,归去,也无风雨也无晴.