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

首頁 > 開發 > PHP > 正文

php實現中文字串截取無亂碼的方法

2024-05-04 21:58:05
字體:
來源:轉載
供稿:網友

有不少php初學者截取字符都會使用substr()函數或者mb_substr()函數來截取了,第一個中文肯定亂碼了,第二個性能不好,下面我總結了幾個自定的中文字串截取無亂碼實例.

例1代碼如下:

  1. function msubstr($str$start=0, $length$charset="utf-8"$suffix=true) 
  2.     { 
  3.         if(function_exists("mb_substr")) 
  4.             return mb_substr($str$start$length$charset); 
  5.         elseif(function_exists('iconv_substr')) { 
  6.             return iconv_substr($str,$start,$length,$charset); 
  7.         } 
  8.         $re['utf-8']   = "/[x01-x7f]|[xc2-xdf][x80-xbf]|[xe0-xef][x80-xbf]{2}|[xf0-xff][x80-xbf]{3}/"
  9.         $re['gb2312'] = "/[x01-x7f]|[xb0-xf7][xa0-xfe]/"
  10.         $re['gbk']    = "/[x01-x7f]|[x81-xfe][x40-xfe]/"
  11.         $re['big5']   = "/[x01-x7f]|[x81-xfe]([x40-x7e]|xa1-xfe])/"
  12.         preg_match_all($re[$charset], $str$match); 
  13.         $slice = join("",array_slice($match[0], $start$length)); 
  14.         if($suffixreturn $slice."…"
  15.         return $slice
  16.     } 

例2代碼如下: 

  1. <?php 
  2. //$start:指定開始截取字符串的位置;$length指定截取字符的長度 
  3. function substr2($string$start$length
  4. $len = strlen($string); 
  5. if($len > $length
  6.    $str = ''
  7.    $len1 = $start + $length//截取到原字符串的位置 
  8.    for($i=$start$i<$len1$i++) 
  9.    { 
  10.     if(ord(substr($string$i, 2)) > 0xa0) //在ASCII中,0xa0表示漢字的開始 
  11.     { 
  12.      $str.=substr($string$i, 2); 
  13.      $i++; 
  14.     } 
  15.     else 
  16.     { 
  17.      $str.=substr($string$i, 1); 
  18.     } 
  19.    } 
  20.    return $str.'...'
  21. else 
  22.    return $string
  23.  
  24. ?> 

例3代碼如下:

  1. <?php 
  2. function chinesesubstr($str$start$len){ 
  3.    $strlen = $start + $len
  4.    for($i=0; $i<$strlen$i++){ 
  5.     if(ord(substr($str$i, 1)) > 0xa0){ 
  6.      $tmpstr .= substr($str$i, 2); 
  7.      $i++; 
  8.     }else
  9.      $tmpstr .= substr($str$i, 1); 
  10.     } 
  11.    } 
  12.    return $tmpstr
  13. $str = "waiting for you 等wait你back"
  14. echo chinesesubstr($str, 0, 19) 
  15. ?> 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 安仁县| 手机| 隆子县| 大洼县| 新巴尔虎左旗| 门源| 乐陵市| 宽甸| 丰宁| 临沭县| 永寿县| 龙州县| 宣城市| 保康县| 双牌县| 金塔县| 五大连池市| 永福县| 绍兴市| 惠安县| 论坛| 福泉市| 凌海市| 怀安县| 广德县| 灌云县| 阜宁县| 嘉荫县| 金山区| 沁阳市| 绥棱县| 洪洞县| 宜黄县| 库伦旗| 桃园市| 江都市| 曲麻莱县| 南通市| 正定县| 湘阴县| 平山县|