标题:Wap用utf8中文字符截取和utf8按照字数分页函数 出处:BIWEB开源PHP WMS系统创始人ArthurXF肖飞的blog 时间:Tue, 06 Feb 2007 18:22:54 +0000 作者:ArthurXF 地址:http://www.bizeway.net/read.php/44.htm 内容:   当一篇文章太长时,比如大于1000字,在手机中需要分页,这个时候分页是按字数多少来进行分页的,虽然手机可以显示超过200个汉字,但是实际情况中,根据手机屏幕的大小,我们一般采取每页200个汉字,即:400个字符。 通用按字数分页方法,适合中英文混排。 使用WordPage($str,200);调用就可以了。 $sublen) return join('', array_slice($t_string[0], $start, $sublen)).$ellipsis;    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.= $ellipsis;    return $tmpstr;  } } /** * 支持utf8按照字数分页 * @author  肖飞 * @param  string $str  待处理字符串 * @param  int $page    当前页面 * @param  int $num    从第几页截断 * @param  string $code  字符串编码 * @return  string */ function WordPage($str,$num=200,$page,$code = 'UTF-8'){  /*下面这段对多字节字符计算不准,主要是strlen产生的误差,所以建议使用下面的程序  if($code == 'UTF-8') $PageAll = strlen($str)/($num*3);  else $PageAll = strlen($str)/($num*2);  */    $PageAll = mb_strlen($str,$code)/$num;  $PageAll = ceil($PageAll);  if ($page==""){    $page = 1;  }  $start = ($page-1)*$num;    $str = csubstr($str, $start, $num,$code,'');  $arrData = array();  $arrData['centent'] = $str;  //echo $str.'
';    if( (1<=$page) && ($page<=$PageAll)){    if($page < $PageAll){      $arrData['pagedown'] = $page+1;      //echo '下一页
';    }    if( $page>1 ){      $arrData['pageup'] = $page-1;      //echo '上一页
';    }  }  $arrData['pagenav'] = '第'.$page.'页/共'.$PageAll.'页';  //echo '第'.$page.'页/共'.$PageAll.'页
';  return $arrData; } ?> Generated by Bo-blog 2.0.3 sp1