麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 語言 > PHP > 正文

多個PHP中文字符串截取函數(shù)

2024-09-04 11:49:53
字體:
供稿:網(wǎng)友

字符串截取是一個非常常見的編程任務(wù),而往往帶中文的字符串截取會經(jīng)常用到。雖然不難,但是自己寫函數(shù)實現(xiàn)又耗費時間,這里介紹一個比較好用的字符串截取函數(shù),能夠勝任基本的需求了,代碼如下:

  1. <?php 
  2. function sysSubStr($string,$length,$append = false)  
  3. {  
  4.     if(strlen($string) <= $length )  
  5.     {  
  6.         return $string;  
  7.     }  
  8.     else  
  9.     {  
  10.         $i = 0;  
  11.         while ($i < $length)  
  12.         {  
  13.             $stringTMP = substr($string,$i,1);  
  14.             if ( ord($stringTMP) >=224 )  
  15.             {  
  16.                 $stringTMP = substr($string,$i,3);  
  17.                 $i = $i + 3;  
  18.             }  
  19.             elseif( ord($stringTMP) >=192 )  
  20.             {  
  21.                 $stringTMP = substr($string,$i,2);  
  22.                 $i = $i + 2;  
  23.             }  
  24.             else  
  25.             {  
  26.                 $i = $i + 1;  
  27.             }  
  28.             $stringLast[] = $stringTMP;  
  29.         }  
  30.         $stringLast = implode("",$stringLast);  
  31.         if($append)  
  32.         {  
  33.             $stringLast .= "...";  
  34.         }  
  35.         return $stringLast;  
  36.     }  
  37. }  
  38. //Vevb.com 
  39. $string = "簡明現(xiàn)代魔法 —— 專注于互聯(lián)網(wǎng)主流的各種技術(shù)";  
  40. $length = "27";  
  41. $append = true;  
  42. echo sysSubStr($string,$length,$append);  
  43. // 輸出  
  44. // 簡明現(xiàn)代魔法 —— 專... 
  45. ?> 

截取GB2312中文字符串:

  1. <?php 
  2. //截取中文字符串 
  3. function mysubstr($str$start$len) { 
  4.     $tmpstr = ""
  5.     $strlen = $start + $len
  6.     for($i = 0; $i < $strlen$i++) { 
  7.         if(ord(substr($str$i, 1)) > 0xa0) { 
  8.             $tmpstr .= substr($str$i, 2); 
  9.             $i++; 
  10.         } else 
  11.             $tmpstr .= substr($str$i, 1); 
  12.     } 
  13.     return $tmpstr
  14. ?> 

截取utf8編碼的多字節(jié)字符串:

  1. <?php 
  2. //截取utf8字符串 
  3. function utf8Substr($str$from$len
  4.     return preg_replace('#^(?:[/x00-/x7F]|[/xC0-/xFF][/x80-/xBF]+){0,'.$from.'}'
  5.                        '((?:[/x00-/x7F]|[/xC0-/xFF][/x80-/xBF]+){0,'.$len.'}).*#s'
  6.                        '$1',$str); 
  7. ?> 

UTF-8、GB2312都支持的漢字截取函數(shù):

  1. <?php 
  2. /*  
  3. Utf-8、gb2312都支持的漢字截取函數(shù)  
  4. cut_str(字符串, 截取長度, 開始長度, 編碼);  
  5. 編碼默認為 utf-8  
  6. 開始長度默認為 0  
  7. */  
  8.  
  9. function cut_str($string$sublen$start = 0, $code = 'UTF-8')  
  10. {  
  11.     if($code == 'UTF-8')  
  12.     {  
  13.         $pa = "/[/x01-/x7f]|[/xc2-/xdf][/x80-/xbf]|/xe0[/xa0-/xbf][/x80-/xbf]|[/xe1-/xef][/x80-/xbf][/x80-/xbf]|/xf0[/x90-/xbf][/x80-/xbf][/x80-/xbf]|[/xf1-/xf7][/x80-/xbf][/x80-/xbf][/x80-/xbf]/";  
  14.         preg_match_all($pa$string$t_string);  
  15.  
  16.         if(count($t_string[0]) - $start > $sublenreturn join(''array_slice($t_string[0], $start$sublen))."...";  
  17.         return join(''array_slice($t_string[0], $start$sublen));  
  18.     }  
  19.     else  
  20.     {  
  21.         $start = $start*2;  
  22.         $sublen = $sublen*2;  
  23.         $strlen = strlen($string);  
  24.         $tmpstr = '';  
  25.  
  26.         for($i=0; $i$strlen$i++)  
  27.         {  
  28.             if($i>=$start && $i< ($start+$sublen))  
  29.             {  
  30.                 if(ord(substr($string$i, 1))>129)  
  31.                 {  
  32.                     $tmpstr.= substr($string$i, 2);  
  33.                 }  
  34.                 else  
  35.                 {  
  36.                     $tmpstr.= substr($string$i, 1);  
  37.                 }  
  38.             }  
  39.             if(ord(substr($string$i, 1))>129) $i++;  
  40.         }  
  41.         if(strlen($tmpstr)< $strlen ) $tmpstr.= "...";  
  42.         return $tmpstr;  
  43.     }  
  44. }  
  45.  
  46. $str = "abcd需要截取的字符串";  
  47. echo cut_str($str, 8, 0, 'gb2312');  
  48. ?> 

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 久久看免费视频 | 国产一区国产二区在线观看 | 成人aaaaa片毛片按摩 | 色视频在线观看 | 国产午夜精品久久久久婷 | 日本一区二区久久久 | 国产九色在线观看 | 九九热这里只有精品8 | 亚洲天堂成人在线 | 亚洲二区三区在线 | 精品国产一区二区在线观看 | 久久久线视频 | 欧美成人精品一区二区 | 一边吃奶一边摸下娇喘 | 色网站综合 | 亚洲午夜精品视频 | 欧美精品在线视频观看 | 亚洲草逼视频 | 国产午夜精品一区二区三区嫩草 | 色播视频在线播放 | 高清av免费 | 国产免费专区 | 久久黄色影院 | 欧美精品欧美 | 国产色视频一区 | 日韩黄色免费电影 | 国产精品久久av | 亚洲aⅴ在线观看 | 亚洲欧美一区二区三区在线观看 | 欧美精品成人一区二区在线观看 | 成人电影毛片 | 国产午夜亚洲精品 | 久久激情免费视频 | 欧美国产成人在线 | av亚洲在线观看 | 成av在线 | 中国fx性欧美xxxx | 最污网站| 全黄裸片武则天一级第4季 偿还电影免费看 | 成年人黄色免费网站 | 欧美一区二区三区不卡免费观看 |