php最精确的字符串长度截取函数

php 最精确的字符串长度截取函数,说是最精确截取长度,其实我也不敢确定是否是最精确的,具体有多精确看下面的效果就知道了:

先上测试用的字符串:

  1. <?php 
  2. header("Content-Type:text/html;charset=utf-8"); 
  3. echo cn_substr_utf8('我是一个,和哈,哦也,,国家!',12); 
  4. echo '<br />',cn_substr_utf8('ai\'2145m a ch3我[是一,个,和哈,哦也,,国家!',12); 
  5. echo '<br />',cn_substr_utf8('【我,是一,个,和哈,哦也,,国家!',12); 
  6. echo '<br />',cn_substr_utf8('我是一,个,和哈,哦也,,国家!',12); 
  7. echo '<br />',cn_substr_utf8('我是,一,个,和哈,哦也,,国家!',12); 
  8. echo '<br />',cn_substr_utf8('我,是,一,个,和哈,哦也,,国家!',12); 
  9. echo '<br />',cn_substr_utf8('我是asd一,个,和哈,哦也,,国家!',12); 
  10. echo '<br />',cn_substr_utf8('【我i\'m[是一,个,和哈,哦也,,国家!',12); 
  11. echo '<br />',cn_substr_utf8('【i\'m a ch我[是一,个,和哈,哦也,,国家!',12); 
  12. echo '<br />',cn_substr_utf8('【i\'2145m a ch3我[是一,个,和哈,哦也,,国家!',12); 

下面是精确截取字符串的效果图:

php最精确的字符串长度截取函数

具体函数代码如下:

  1. //utf-8中文截取,单字节截取模式 
  2. function cn_substr_utf8($str,$length,$append='...',$start=0){ 
  3.     if(strlen($str)<$start+1){ 
  4.         return ''
  5.     } 
  6.     preg_match_all("/./su",$str,$ar); 
  7.     $str2=''
  8.     $tstr=''
  9.     //www.phpernote.com 
  10.     for($i=0;isset($ar[0][$i]);$i++){ 
  11.         if(strlen($tstr)<$start){ 
  12.             $tstr.=$ar[0][$i]; 
  13.         }else
  14.             if(strlen($str2)<$length + strlen($ar[0][$i])){ 
  15.                 $str2.=$ar[0][$i]; 
  16.             }else
  17.                 break
  18.             } 
  19.         } 
  20.     } 
  21.     return $str==$str2?$str2:$str2.$append

转载请注明:代码家园 » php最精确的字符串长度截取函数

评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)