php自定義中文字符串截取函數(shù)substr_for_gb2312及substr_for_utf8示例
本文實(shí)例講述了php自定義中文字符串截取函數(shù)substr_for_gb2312及substr_for_utf8用法。分享給大家供大家參考,具體如下:
/* *gb2312中文字符串截取 */ function substr_for_gb2312($str,$start,$len=null) { $totlelength = strlen($str); //特例情況 if ($len == null) $len = $totlelength; if ($len ==0) return ""; if ($len >= $totlelength && $start == 0 ) return $str; if ($start > $totlelength) return ""; //分析$start if ($start < 0 ) //$start<0時(shí),轉(zhuǎn)化為$start>0時(shí)的定位. { if ( abs($start) >= $totlelength ) $start = 0; else $start = $totlelength - abs($start); } //確定起始位置,當(dāng)起始位拆分某漢字時(shí),返回值包含此漢字. if ($start > 0) { $i = $start-1; $flag = -1; while ($i >= 0) { if ( ord(substr($str,$i,1)) > 160) { $flag = -1*$flag; } else break; $i--; } if($flag==1) { $start = $start - 1; $len++; //保證不位移. } } $str = substr($str,$start);//截除字符串$str的$start位前的字符 $totlelength = strlen($str); //確定結(jié)束位置,當(dāng)結(jié)束位拆分某漢字時(shí),返回值不包含此漢字. if ($len<0) $len = $totlelength - abs($len); if ($len <= 0) return ""; $i=min($len,$totlelength); $i--; $flag = -1; while ($i >= 0) { if (ord(substr($str,$i,1))>160) { $flag=-1*$flag; } else break; $i--; } if($flag == 1) $len=$len-1; $subit=substr($str,0,$len); return $subit; } /****************************************************************** * PHP截取UTF-8字符串,解決半字符問題。 * 英文、數(shù)字(半角)為1字節(jié)(8位),中文(全角)為3字節(jié) * @return 取出的字符串, 當(dāng)$len小于等于0時(shí), 會(huì)返回整個(gè)字符串 * @param $str 源字符串 * $len 左邊的子串的長(zhǎng)度 ****************************************************************/ function substr_for_utf($str,$len) { for($i=0;$i<$len;$i++) { $temp_str=substr($str,0,1); if(ord($temp_str) > 127) { $i++; if($i<$len) { $new_str[]=substr($str,0,3); $str=substr($str,3); } } else { $new_str[]=substr($str,0,1); $str=substr($str,1); } } return join($new_str); } ?> /*帶start位置的utf8截取函數(shù)*/ function utf8_substr($string, $start, $length) { preg_match_all ('/[/x00-/x7F]|[/xC2-/xDF][/x80-/xBF]|[/xE0-/xEF][/x80-/xBF][/x80-/xBF]|[/xF0-/xF4][/x80-/xBF][/x80-/xBF][/x80-/x BF]/', $string, $rs); $out = ''; $size = count ($rs[0]); $end = $start + $length; if ($end > $size ) { $end = $size; } for ($i = $start; $i < $end; $i++) { $out .= $rs[0][$i]; } return $out; }
補(bǔ)充:小編在這里推薦一款本站的php格式化美化的排版工具幫助大家在以后的PHP程序設(shè)計(jì)中進(jìn)行代碼排版:
php代碼在線格式化美化工具:
http://tools.jb51.net/code/phpformat
另外,由于php屬于C語(yǔ)言風(fēng)格,因此下面這款工具同樣可以實(shí)現(xiàn)php代碼的格式化:
C語(yǔ)言風(fēng)格/HTML/CSS/json代碼格式化美化工具:
http://tools.jb51.net/code/ccode_html_css_json
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP數(shù)學(xué)運(yùn)算技巧總結(jié)》、《php操作office文檔技巧總結(jié)(包括word,excel,access,ppt)》、《PHP數(shù)組(Array)操作技巧大全》、《php排序算法總結(jié)》、《PHP常用遍歷算法與技巧總結(jié)》、《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設(shè)計(jì)算法總結(jié)》、《php正則表達(dá)式用法總結(jié)》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》、《php字符串(string)用法總結(jié)》及《php常見數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
- php中的一個(gè)中文字符串截取函數(shù)
- PHP中英混合字符串截取函數(shù)代碼
- 多個(gè)PHP中文字符串截取函數(shù)
- php中支持多種編碼的中文字符串截取函數(shù)!
- php字符串截取函數(shù)用法分析
- PHP中文處理 中文字符串截取(mb_substr)和獲取中文字符串字?jǐn)?shù)
- PHP截取漢字亂碼問題解決方法mb_substr函數(shù)的應(yīng)用
- php mb_substr()函數(shù)截取中文字符串應(yīng)用示例
- 淺析PHP substr,mb_substr以及mb_strcut的區(qū)別和用法
- php截取字符串函數(shù)substr,iconv_substr,mb_substr示例以及優(yōu)劣分析
- php字符串截取函數(shù)mb_substr用法實(shí)例分析
相關(guān)文章
Win2003下APACHE+PHP5+MYSQL4+PHPMYADMIN 的簡(jiǎn)易安裝配置
Win2003下APACHE+PHP5+MYSQL4+PHPMYADMIN 的簡(jiǎn)易安裝配置...2006-11-11php中使用DOM類讀取XML文件的實(shí)現(xiàn)代碼
php中使用DOM類讀取XML文件的實(shí)現(xiàn)代碼,學(xué)習(xí)php的朋友可以參考下。2011-12-12關(guān)于使用coreseek并為其做分頁(yè)的介紹
本篇文章是對(duì)使用coreseek并為其做分頁(yè)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06使用php自動(dòng)備份數(shù)據(jù)庫(kù)表的實(shí)現(xiàn)方法
下面小編就為大家?guī)硪黄褂胮hp自動(dòng)備份數(shù)據(jù)庫(kù)表的實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-07-07jQuery+PHP+ajax實(shí)現(xiàn)微博加載更多內(nèi)容列表功能
這篇文章主要介紹了jQuery+PHP+ajax實(shí)現(xiàn)微博加載更多內(nèi)容列表功能,對(duì)于微博開發(fā)來說非常實(shí)用,需要的朋友可以參考下2014-06-06PHP將HTML轉(zhuǎn)換成文本的實(shí)現(xiàn)代碼
這篇文章主要介紹了PHP將HTML轉(zhuǎn)換成文本的實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-01-01php中用memcached實(shí)現(xiàn)頁(yè)面防刷新功能
這篇文章主要介紹了php中用memcached實(shí)現(xiàn)頁(yè)面防刷新功能,這是一個(gè)比較安全、穩(wěn)定的防刷新方案,需要的朋友可以參考下2014-08-08