最準(zhǔn)確的php截取字符串長(zhǎng)度函數(shù)
說(shuō)是最精確截取長(zhǎng)度,其實(shí)我也不敢確定是否是最精確的,具體有多精確看下面的效果就知道了:
先上測(cè)試用的字符串:
<?php header("Content-Type:text/html;charset=utf-8"); echo cn_substr_utf8('我是一個(gè),和哈,哦也,,國(guó)家!',12); echo '<br />',cn_substr_utf8('ai\'2145m a ch3我[是一,個(gè),和哈,哦也,,國(guó)家!',12); echo '<br />',cn_substr_utf8('【我,是一,個(gè),和哈,哦也,,國(guó)家!',12); echo '<br />',cn_substr_utf8('我是一,個(gè),和哈,哦也,,國(guó)家!',12); echo '<br />',cn_substr_utf8('我是,一,個(gè),和哈,哦也,,國(guó)家!',12); echo '<br />',cn_substr_utf8('我,是,一,個(gè),和哈,哦也,,國(guó)家!',12); echo '<br />',cn_substr_utf8('我是asd一,個(gè),和哈,哦也,,國(guó)家!',12); echo '<br />',cn_substr_utf8('【我i\'m[是一,個(gè),和哈,哦也,,國(guó)家!',12); echo '<br />',cn_substr_utf8('【i\'m a ch我[是一,個(gè),和哈,哦也,,國(guó)家!',12); echo '<br />',cn_substr_utf8('【i\'2145m a ch3我[是一,個(gè),和哈,哦也,,國(guó)家!',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截取字符串長(zhǎng)度函數(shù)的文章對(duì)大家的學(xué)習(xí)有所幫助。
- PHP字符串長(zhǎng)度計(jì)算 - strlen()函數(shù)使用介紹
- php中計(jì)算中文字符串長(zhǎng)度、截取中文字符串的函數(shù)代碼
- php自定義函數(shù)實(shí)現(xiàn)統(tǒng)計(jì)中文字符串長(zhǎng)度的方法小結(jié)
- 利用PHP函數(shù)計(jì)算中英文字符串長(zhǎng)度的方法
- PHP中preg_match函數(shù)正則匹配的字符串長(zhǎng)度問(wèn)題
- php strlen mb_strlen計(jì)算中英文混排字符串長(zhǎng)度
- 詳解PHP中strlen和mb_strlen函數(shù)的區(qū)別
- 淺析PHP中strlen和mb_strlen的區(qū)別
- 自己寫(xiě)的php中文截取函數(shù)mb_strlen和mb_substr
- PHP中strlen()和mb_strlen()的區(qū)別淺析
- php中strlen和mb_strlen用法實(shí)例分析
- php常用字符串長(zhǎng)度函數(shù)strlen()與mb_strlen()用法實(shí)例分析
相關(guān)文章
Php 構(gòu)造函數(shù)construct的前下劃線是雙的_
最近寫(xiě)php的class時(shí),總是碰到function non object的錯(cuò)誤,知道是類沒(méi)有實(shí)例化,但就是不知道錯(cuò)誤在哪里。2009-12-12PHP基于timestamp和nonce實(shí)現(xiàn)的防止重放攻擊方案分析
這篇文章主要介紹了PHP基于timestamp和nonce實(shí)現(xiàn)的防止重放攻擊方案,簡(jiǎn)單講述了重放攻擊相關(guān)原理并結(jié)合實(shí)例形式分析了php使用timestamp和nonce實(shí)現(xiàn)的防止重放攻擊相關(guān)操作技巧,需要的朋友可以參考下2019-07-07Linux下快速搭建php開(kāi)發(fā)環(huán)境
本文主要介紹了Linux下快速搭建php開(kāi)發(fā)環(huán)境的方法步驟。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧2017-03-03總結(jié)PHP刪除字符串最后一個(gè)字符的三種方法
這篇文章為大家講解的是php實(shí)現(xiàn)如何去掉字符串的最后一個(gè)字符的多種方法,感興趣的同學(xué)參考下。下面來(lái)一起看看。2016-08-08PHPMailer發(fā)送郵件功能實(shí)現(xiàn)流程
隨著企業(yè)化的管理越來(lái)越規(guī)范,各種項(xiàng)目管理系統(tǒng)中,都需要加入到郵件實(shí)時(shí)通知功能,所以在項(xiàng)目中如何整合發(fā)郵件功能,其實(shí)也是很重要的一點(diǎn)。本文為大家介紹了PHP實(shí)現(xiàn)郵件實(shí)時(shí)通知功能的示例代碼,需要的可以參考一下2022-12-12功能強(qiáng)大的PHP POST提交數(shù)據(jù)類
這篇文章主要為大家詳細(xì)介紹了功能強(qiáng)大的PHP POST提交數(shù)據(jù)類,代碼簡(jiǎn)潔且具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-07-07php設(shè)計(jì)模式 Bridge (橋接模式)
將抽象部份與它實(shí)現(xiàn)部分分離,使用它們都可以有獨(dú)立的變化2011-06-06深入講解PHP的對(duì)象注入(Object Injection)
這篇文章主要介紹了PHP中對(duì)象注入的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),相信對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-03-03