您好,登錄后才能下訂單哦!
這篇文章主要介紹了php自定義中文字符串截取函數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時,轉化為$start>0時的定位. { if ( abs($start) >= $totlelength ) $start = 0; else $start = $totlelength - abs($start); } //確定起始位置,當起始位拆分某漢字時,返回值包含此漢字. 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); //確定結束位置,當結束位拆分某漢字時,返回值不包含此漢字. 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字符串,解決半字符問題。 * 英文、數字(半角)為1字節(8位),中文(全角)為3字節 * @return 取出的字符串, 當$len小于等于0時, 會返回整個字符串 * @param $str 源字符串 * $len 左邊的子串的長度 ****************************************************************/ 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截取函數*/ 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; }
感謝你能夠認真閱讀完這篇文章,希望小編分享的“php自定義中文字符串截取函數substr_for_gb2312及substr_for_utf8怎么用”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。