***PHP各種編碼的漢字字串擷取
雖然PHP有現成的擷取字串函式substr(),但是這個函式不能對漢字字串進行擷取,要實現這種效果還需要我們自己去編寫相應的函式。漢字有多種編碼,比如GB2312,UTF-8等,漢字字串的擷取需要區分這種漢字編碼,下面是給出的幾個解決方案。
擷取GB2312中文字串
<?php //擷取中文字串- function mysubstr($str, $start, $len) { $tmpstr = ""; $strlen = $start + $len; for($i = 0; $i < $strlen; $i++) { if(ord(substr($str, $i, 1)) > 0xa0) { $tmpstr .= substr($str, $i, 2); $i++; } else $tmpstr .= substr($str, $i, 1); } return $tmpstr; } ?>
擷取utf8編碼的多位元組字串
<?php //擷取utf8字串 function utf8Substr($str, $from, $len) { return preg_replace(`#^(?:[x00-x7F]|[xC0-xFF][x80-xBF]+){0,`.$from.`}`. `((?:[x00-x7F]|[xC0-xFF][x80-xBF]+){0,`.$len.`}).*#s`, `$1`,$str); } ?>
UTF-8、GB2312都支援的漢字擷取函式
<?php /* Utf-8、gb2312都支援的漢字擷取函式 cut_str(字串, 擷取長度, 開始長度, 編碼); 編碼預設為 utf-8 開始長度預設為 0 */function cut_str($string, $sublen, $start = 0, $code = `UTF-8`) { if($code == `UTF-8`) { $pa ="/[x01-x7f]|[xc2-xdf][x80-xbf]|xe0[xa0-xbf][x80-xbf]|[xe1-xef][x80-xbf][x80-xbf]|xf0[x90-xbf][x80-xbf][x80-xbf]|[xf1-xf7][x80-xbf][x80-xbf][x80-xbf]/"; preg_match_all($pa, $string, $t_string); if(count($t_string[0]) - $start > $sublen) return join(``, array_slice($t_string[0], $start, $sublen))."..."; return join(``, array_slice($t_string[0], $start, $sublen)); } else { $start = $start*2; $sublen = $sublen*2; $strlen = strlen($string); $tmpstr = ``; for($i=0; $i<$strlen; $i++) { if($i>=$start && $i<($start+$sublen)) { if(ord(substr($string, $i, 1))>129) { $tmpstr.= substr($string, $i, 2); } else { $tmpstr.= substr($string, $i, 1); } } if(ord(substr($string, $i, 1))>129) $i++; } if(strlen($tmpstr)<$strlen ) $tmpstr.= "..."; return $tmpstr; } } $str = "abcd需要擷取的字串"; echo cut_str($str, 8, 0, `gb2312`); ?>
BugFree 的字元擷取函式
<?php /** * @package BugFree * @version $Id: FunctionsMain.inc.php,v 1.32 2005/09/24 11:38:37 wwccss Exp $ * * * Return part of a string(Enhance the function substr()) * * @author Chunsheng Wang <[email]wwccss@263.net[/email]> * @param string $String the string to cut. * @param int $Length the length of returned string. * @param booble $Append whether append "...": false|true * @return string the cutted string. */ function sysSubStr($String,$Length,$Append = false) { if (strlen($String) <= $Length ) { return $String; } else { $I = 0; while ($I < $Length) { $StringTMP = substr($String,$I,1); if ( ord($StringTMP) >=224 ) { $StringTMP = substr($String,$I,3); $I = $I + 3; } elseif( ord($StringTMP) >=192 ) { $StringTMP = substr($String,$I,2); $I = $I + 2; } else { $I = $I + 1; } $StringLast[] = $StringTMP; } $StringLast = implode("",$StringLast); if($Append) { $StringLast .= "..."; } return $StringLast; } } $String = "www.nowamagic.net"; $Length = "18"; $Append = false; echo sysSubStr($String,$Length,$Append); ?>
如何聯絡我:【萬里虎】www.bravetiger.cn
【QQ】3396726884 (諮詢問題100元起,幫助解決問題500元起)
【部落格】http://www.cnblogs.com/kenshinobiy/
相關文章
- php 擷取漢字字串 亂碼解決 支援utf8和gb2312的編碼的漢字PHP字串
- PHP字串擷取PHP字串
- 如何擷取指定長度字串區分漢字和字元字串字元
- php中英字串擷取PHP字串
- php字串擷取函式,支援中文擷取PHP字串函式
- 檔案路徑類 字串的各種擷取方式,包括擷取到檔名字串
- php uncode 轉漢字編碼PHP
- JavaScript 擷取指定長度字串 區分漢字和英文字元JavaScript字串字元
- php 擷取中英文混合字串PHP字串
- php 如何擷取中文字串PHP字串
- Linux shell指令碼的字串擷取Linux指令碼字串
- 對url字串中域名的三種擷取方式字串
- java中文字串漢字轉GBK編碼Java字串
- 獲取漢字串的拼音助記碼字串
- MySQL 字串函式:字串擷取MySql字串函式
- php獲取漢字的拼音 拼音首字母PHP
- css實現的字串擷取程式碼例項CSS字串
- shell 擷取變數的字串變數字串
- PHP 實現字串翻轉(包含中文漢字)的實現PHP字串
- 去除字串中的漢字function字串Function
- jQuery字串擷取詳解jQuery字串
- iOS擷取NSString字串iOS字串
- Mysql字串擷取函式MySql字串函式
- js實現的擷取指定長度字串程式碼JS字串
- jQuery實現的擷取指定長度字串程式碼jQuery字串
- PHP擷取html文章PHPHTML
- Shell中的字串擷取介紹字串
- shell指令碼擷取字串字尾名,檔名指令碼字串
- java編寫的字串擷取函式—UTF-16定長特性Java字串函式
- 獲取字串中的所有漢字字串
- iOS NSString字串擷取方法iOS字串
- PHP字串學習之如何返回漢字或混合字元的長度PHP字串字元
- php ffmpeg 視訊擷取PHP
- Linux下的字串擷取詳解Linux字串
- javascript擷取指定指定區間的字串JavaScript字串
- iOS擷取特定的字串(正則匹配)iOS字串
- servlet request getQueryString 漢字的URI編碼如何轉碼Servlet
- 擷取指定長度字串長度程式碼例項字串