最準(zhǔn)確的php截取字符串長度函數(shù)
說是最精確截取長度,其實(shí)我也不敢確定是否是最精確的,具體有多精確看下面的效果就知道了:
先上測(cè)試用的字符串:
<?php
header("Content-Type:text/html;charset=utf-8");
echo cn_substr_utf8('我是一個(gè),和哈,哦也,,國家!',12);
echo '<br />',cn_substr_utf8('ai\'2145m a ch3我[是一,個(gè),和哈,哦也,,國家!',12);
echo '<br />',cn_substr_utf8('【我,是一,個(gè),和哈,哦也,,國家!',12);
echo '<br />',cn_substr_utf8('我是一,個(gè),和哈,哦也,,國家!',12);
echo '<br />',cn_substr_utf8('我是,一,個(gè),和哈,哦也,,國家!',12);
echo '<br />',cn_substr_utf8('我,是,一,個(gè),和哈,哦也,,國家!',12);
echo '<br />',cn_substr_utf8('我是asd一,個(gè),和哈,哦也,,國家!',12);
echo '<br />',cn_substr_utf8('【我i\'m[是一,個(gè),和哈,哦也,,國家!',12);
echo '<br />',cn_substr_utf8('【i\'m a ch我[是一,個(gè),和哈,哦也,,國家!',12);
echo '<br />',cn_substr_utf8('【i\'2145m a ch3我[是一,個(gè),和哈,哦也,,國家!',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ù)的文章對(duì)大家的學(xué)習(xí)有所幫助。
- PHP字符串長度計(jì)算 - strlen()函數(shù)使用介紹
- php中計(jì)算中文字符串長度、截取中文字符串的函數(shù)代碼
- php自定義函數(shù)實(shí)現(xiàn)統(tǒng)計(jì)中文字符串長度的方法小結(jié)
- 利用PHP函數(shù)計(jì)算中英文字符串長度的方法
- PHP中preg_match函數(shù)正則匹配的字符串長度問題
- php strlen mb_strlen計(jì)算中英文混排字符串長度
- 詳解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用法實(shí)例分析
- php常用字符串長度函數(shù)strlen()與mb_strlen()用法實(shí)例分析
相關(guān)文章
巧用php中的array_filter()函數(shù)去掉多維空值的代碼分享
在我們開發(fā)過程中,判斷數(shù)組為空時(shí)你會(huì)想到什么方法呢?首先想到的應(yīng)該是empty函數(shù),不過直接用empty函數(shù)判斷為空是不對(duì)的,因?yàn)楫?dāng)這個(gè)值是多維數(shù)的時(shí)候,empty結(jié)果是有值的2012-09-09
php 模擬POST|GET操作實(shí)現(xiàn)代碼
很早的時(shí)候,參加面試,需要使用php的函數(shù)模擬一個(gè)post訪問。盡管對(duì)php很熟悉,但是由于面試之前很長時(shí)間沒有使用php語言,所以就沒有答上來。2010-07-07
php實(shí)現(xiàn)數(shù)字轉(zhuǎn)億萬單位的示例代碼
這篇文章主要為大家詳細(xì)介紹了php如何實(shí)現(xiàn)數(shù)字轉(zhuǎn)億萬單位,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-11-11
PHP實(shí)現(xiàn)獲取第一個(gè)中文首字母并進(jìn)行排序的方法
這篇文章主要介紹了PHP實(shí)現(xiàn)獲取第一個(gè)中文首字母并進(jìn)行排序的方法,涉及php數(shù)組遍歷、編碼轉(zhuǎn)換及數(shù)組排序相關(guān)操作技巧,需要的朋友可以參考下2017-05-05

