125 列舉實現PHP擷取中文不亂碼的實現方法
直接使用PHP函式substr擷取中文字元可能會出現亂碼,主要是substr可能硬生生的將一箇中文字元“鋸”成兩半。解決辦法:
1、使用mbstring擴充套件庫的mb_substr擷取就不會出現亂碼了。
2、自己書寫擷取函式,但效率不如用mbstring擴充套件庫來得高。
3、如果僅是為了輸出擷取的串,可用如下方式實現:substr($str, 0, 30).chr(0)。
=============================
substr()函式可以分割文字,但要分割的文字如果包括中文字元往往會遇到問題,這時可以用mb_substr()/mb_strcut這個函 數,mb_substr()/mb_strcut的用法與substr()相似,只是在mb_substr()/mb_strcut最後要加入多一個參 數,以設定字串的編碼,但是一般的伺服器都沒開啟php_mbstring.dll,需要在php.ini在把php_mbstring.dll開啟。
舉個例子:
<?php
echo mb_substr('這樣一來我的字串就不會有亂碼^_^', 0, 7, 'utf-8');
?>
輸出:這樣一來我的字
<?php
echo mb_strcut('這樣一來我的字串就不會有亂碼^_^', 0, 7, 'utf-8');
?>
輸出:這樣一
從上面的例子可以看出,mb_substr是按字來切分字元,而mb_strcut是按位元組來切分字元,但是都不會產生半個字元的現象。
=============================
PHP實現中文字串擷取無亂碼的方法
function GBsubstr($string, $start, $length) {
if(strlen($string)>$length){
$str=null;
$len=$start+$length;
for($i=$start;$i<$len;$i++){
if(ord(substr($string,$i,1))>0xa0){
$str.=substr($string,$i,2);
$i++;
}else{
$str.=substr($string,$i,1);
}
}
return $str.'...';
}else{
return $string;
}
}
function GBsubstr($string, $start, $length) {
if(strlen($string)>$length){
$str=null;
$len=$start+$length;
for($i=$start;$i<$len;$i++){
if(ord(substr($string,$i,1))>0xa0){
//判斷字元的ascii值
$str.=substr($string,$i,2);
$i++;
}else{
$str.=substr($string,$i,1);
}
}
return $str;
}else{
return $string;
}
}
相關文章
- Java實現過濾中文亂碼Java
- 列舉GCRoots的實現GC
- 基於註解的 PHP 列舉類實現PHP
- css實現的字串擷取程式碼例項CSS字串
- QT擷取螢幕的實現QT
- js實現的擷取指定長度字串程式碼JS字串
- jQuery實現的擷取指定長度字串程式碼jQuery字串
- php字串擷取函式,支援中文擷取PHP字串函式
- Java 列舉查詢並不拋異常的實現Java
- IE瀏覽器下POST中文亂碼解決辦法 - PHP實現瀏覽器PHP
- PHP獲取MAC地址的實現程式碼PHPMac
- PHP 實現字串翻轉(包含中文漢字)的實現PHP字串
- 遞迴實現指數型列舉遞迴
- js模擬實現列舉效果JS
- C#中實現列舉數C#
- PHP中文亂碼PHP
- c++11 實現列舉值到列舉名的轉換C++
- sqlldr 匯入中文出現亂碼解決方法SQL
- Java 利用列舉實現單例模式Java單例模式
- 透過列舉enum實現單例單例
- wasm + ffmpeg實現前端擷取視訊幀功能ASM前端
- php查詢mssql出現亂碼的解決方法PHPSQL
- php 如何擷取中文字串PHP字串
- PHP 陣列底層實現PHP陣列
- 深入淺出 Java 中列舉的實現原理Java
- Java一個列舉類的2種實現。Java
- OC中列舉寫法 以及 字串型別列舉實現探索字串型別
- 解決MySQL中文亂碼和插入中文不顯示的方法MySql
- 7.1 實現程式記憶體塊列舉記憶體
- 小技巧分享:在 Go 如何實現列舉?Go
- PHP 實現按奇偶排序陣列PHP排序陣列
- 用棧實現佇列,實現Enqueue和Dequeue方法佇列ENQ
- js實現的獲取選中文字程式碼例項JS
- 【深入 PHP】PHP7 陣列的底層實現PHP陣列
- php陣列轉xml的遞迴實現PHP陣列XML遞迴
- 更快的方式實現 PHP 陣列去重PHP陣列
- javascript 偽陣列實現方法JavaScript陣列
- 迴圈實現從一個陣列中按順序任意擷取幾個字元。陣列字元