php如何截取字符串或段落的前N个单词或中文汉子

时间:2016-09-07
需求是这样的,有一文章列表页面,除了显示文章标题外,还要显示文章的一部分类容,如果内容小于25个单词,全部显示出来,如果内容大于25个单词,只显示前25个单词,后面的内容用省略号代替。(注:这里的文章内容全部是英文)

下面是一个通用的截取段落中前N个单词的php函数(适用于英文):

function shorten_string($string, $wordsreturned)
{
    $retval = $string;  //  Just in case of a problem
    $array = explode(" ", $string);
    /*  Already short enough, return the whole thing*/
    if (count($array)<=$wordsreturned)
    {
        $retval = $string;
    }
    /*  Need to chop of some words*/
    else
    {
        array_splice($array, $wordsreturned);
        $retval = implode(" ", $array)." ...";
    }
    return $retval;
}

下面是一个通用的截取段落中前N个汉子的php函数(适用于中文汉子):

function msubstr($str,$start,$len) { 
    $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; 
}