国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

php自定義中文字符串截取函數substr_for_gb2312及substr_for_utf8示例

2024-05-04 23:46:51
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了php自定義中文字符串截取函數substr_for_gb2312及substr_for_utf8用法,結合實例形式分析了針對gb2312與utf-8編碼的自定義中文字符串截取函數的實現與使用方法,需要的朋友可以參考下
 

本文實例講述了php自定義中文字符串截取函數substr_for_gb2312及substr_for_utf8用法。分享給大家供大家參考,具體如下:

/**gb2312中文字符串截取 */function substr_for_gb2312($str,$start,$len=null) {  $totlelength = strlen($str);  //特例情況  if ($len == null) $len = $totlelength;  if ($len ==0) return "";  if ($len >= $totlelength && $start == 0 ) return $str;  if ($start > $totlelength) return "";  //分析$start  if ($start < 0 ) //$start<0時,轉化為$start>0時的定位.  {  if ( abs($start) >= $totlelength ) $start = 0;  else $start = $totlelength - abs($start);  }  //確定起始位置,當起始位拆分某漢字時,返回值包含此漢字.  if ($start > 0)  {  $i = $start-1;  $flag = -1;  while ($i >= 0)  {  if ( ord(substr($str,$i,1)) > 160)  {  $flag = -1*$flag;  }  else break;  $i--;  }  if($flag==1)  {  $start = $start - 1;  $len++;    //保證不位移.  } } $str = substr($str,$start);//截除字符串$str的$start位前的字符 $totlelength = strlen($str); //確定結束位置,當結束位拆分某漢字時,返回值不包含此漢字. if ($len<0) $len = $totlelength - abs($len); if ($len <= 0) return ""; $i=min($len,$totlelength); $i--; $flag = -1; while ($i >= 0) {  if (ord(substr($str,$i,1))>160)  {   $flag=-1*$flag;  }  else break;  $i--; } if($flag == 1)  $len=$len-1; $subit=substr($str,0,$len); return $subit; }/******************************************************************* PHP截取UTF-8字符串,解決半字符問題。* 英文、數字(半角)為1字節(8位),中文(全角)為3字節* @return 取出的字符串, 當$len小于等于0時, 會返回整個字符串* @param $str 源字符串* $len 左邊的子串的長度****************************************************************/function substr_for_utf($str,$len){for($i=0;$i<$len;$i++){$temp_str=substr($str,0,1);if(ord($temp_str) > 127){$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);}?>/*帶start位置的utf8截取函數*/function utf8_substr($string, $start, $length) {  preg_match_all ('/[/x00-/x7F]|[/xC2-/xDF][/x80-/xBF]|[/xE0-/xEF][/x80-/xBF][/x80-/xBF]|[/xF0-/xF4][/x80-/xBF][/x80-/xBF][/x80-/xBF]/', $string, $rs);  $out = '';  $size = count ($rs[0]);  $end = $start + $length;  if ($end > $size ) {    $end = $size;  }  for ($i = $start; $i < $end; $i++) {    $out .= $rs[0][$i];  }  return $out;}
 


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 庆城县| 新疆| 特克斯县| 桂平市| 西盟| 沙湾县| 平乐县| 古丈县| 原平市| 遂昌县| 安陆市| 翁源县| 固安县| 平度市| 崇州市| 荣昌县| 昆山市| 梅河口市| 韶山市| 嘉兴市| 海口市| 泰和县| 中江县| 酒泉市| 阳谷县| 花莲市| 南陵县| 淳安县| 东兰县| 潮州市| 酉阳| 河西区| 内丘县| 宝山区| 天台县| 汾阳市| 婺源县| 滦南县| 天长市| 沁阳市| 永福县|