最準(zhǔn)確的php截取字符串長度函數(shù)
說是最精確截取長度,其實我也不敢確定是否是最精確的,具體有多精確看下面的效果就知道了:
先上測試用的字符串:
<?php header("Content-Type:text/html;charset=utf-8"); echo cn_substr_utf8('我是一個,和哈,哦也,,國家!',12); echo '<br />',cn_substr_utf8('ai\'2145m a ch3我[是一,個,和哈,哦也,,國家!',12); echo '<br />',cn_substr_utf8('【我,是一,個,和哈,哦也,,國家!',12); echo '<br />',cn_substr_utf8('我是一,個,和哈,哦也,,國家!',12); echo '<br />',cn_substr_utf8('我是,一,個,和哈,哦也,,國家!',12); echo '<br />',cn_substr_utf8('我,是,一,個,和哈,哦也,,國家!',12); echo '<br />',cn_substr_utf8('我是asd一,個,和哈,哦也,,國家!',12); echo '<br />',cn_substr_utf8('【我i\'m[是一,個,和哈,哦也,,國家!',12); echo '<br />',cn_substr_utf8('【i\'m a ch我[是一,個,和哈,哦也,,國家!',12); echo '<br />',cn_substr_utf8('【i\'2145m a ch3我[是一,個,和哈,哦也,,國家!',12);
下面是精確截取字符串的效果圖:
具體函數(shù)代碼如下:
//utf-8中文截取,單字節(jié)截取模式 function cn_substr_utf8($str,$length,$append='...',$start=0){ if(strlen($str)<$start+1){ return ''; } preg_match_all("/./su",$str,$ar); $str2=''; $tstr=''; //www.phpernote.com for($i=0;isset($ar[0][$i]);$i++){ if(strlen($tstr)<$start){ $tstr.=$ar[0][$i]; }else{ if(strlen($str2)<$length + strlen($ar[0][$i])){ $str2.=$ar[0][$i]; }else{ break; } } } return $str==$str2?$str2:$str2.$append; }
如果大家認(rèn)為還不夠準(zhǔn)確大家可以在此基礎(chǔ)上進(jìn)行改進(jìn),或者是創(chuàng)新,希望這篇關(guān)于php截取字符串長度函數(shù)的文章對大家的學(xué)習(xí)有所幫助。
- PHP字符串長度計算 - strlen()函數(shù)使用介紹
- php中計算中文字符串長度、截取中文字符串的函數(shù)代碼
- php自定義函數(shù)實現(xiàn)統(tǒng)計中文字符串長度的方法小結(jié)
- 利用PHP函數(shù)計算中英文字符串長度的方法
- PHP中preg_match函數(shù)正則匹配的字符串長度問題
- php strlen mb_strlen計算中英文混排字符串長度
- 詳解PHP中strlen和mb_strlen函數(shù)的區(qū)別
- 淺析PHP中strlen和mb_strlen的區(qū)別
- 自己寫的php中文截取函數(shù)mb_strlen和mb_substr
- PHP中strlen()和mb_strlen()的區(qū)別淺析
- php中strlen和mb_strlen用法實例分析
- php常用字符串長度函數(shù)strlen()與mb_strlen()用法實例分析
相關(guān)文章
Php 構(gòu)造函數(shù)construct的前下劃線是雙的_
最近寫php的class時,總是碰到function non object的錯誤,知道是類沒有實例化,但就是不知道錯誤在哪里。2009-12-12PHP基于timestamp和nonce實現(xiàn)的防止重放攻擊方案分析
這篇文章主要介紹了PHP基于timestamp和nonce實現(xiàn)的防止重放攻擊方案,簡單講述了重放攻擊相關(guān)原理并結(jié)合實例形式分析了php使用timestamp和nonce實現(xiàn)的防止重放攻擊相關(guān)操作技巧,需要的朋友可以參考下2019-07-07功能強(qiáng)大的PHP POST提交數(shù)據(jù)類
這篇文章主要為大家詳細(xì)介紹了功能強(qiáng)大的PHP POST提交數(shù)據(jù)類,代碼簡潔且具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-07-07深入講解PHP的對象注入(Object Injection)
這篇文章主要介紹了PHP中對象注入的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。2017-03-03