老生长谈的中文截取

来源:互联网 发布:葫芦侠找不到游戏数据 编辑:程序博客网 时间:2024/04/29 18:01

网上流传很多关于中文截取的代码,但实现效果均不理想!表现如下

  1. 截取结果的长度不正确。
  2. 用循环来逐字截取,效率太底,不是明智之举。

顾自己写了一个现来分享一下:

 /* Author: Jay  * e-mail: warcanfeng@126.com  * QQ:308733259  * Function: 中文截取  * @Param $String string 待截取的文本  * @Param $Len int 截取的长度   * Retrun string  */function expSubstr($String = '', $Len = '') {if(!$String) return false;if($Len) {    $strTemp = preg_replace("/[^/x80-/xff]{1}/s", 0, $String);    $strTemp = preg_replace("/[/x80-/xff]{2}/s" , 1, $strTemp);            //echo $strTemp.'<  >';     $temp    = substr($strTemp, 0, (int)$Len);         $realLen = substr_count($temp, 1);if($realLen) $Len += $realLen;return substr($String, 0, (int)$Len);}return $String;}/** TEST **/$str = "中111110,,,?,,fdsaf中文1你111我1他1";echo expSubStr($str, 10);
按位选择部分由于暂无这方面需求顾未写上去~ 有需求者可以加以改造。
如有更好的实现方法或发现BUG的请通知一下小弟! 欢迎加QQ成为好友
原创粉丝点击