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
- 基於註解的 PHP 列舉類實現PHP
- PHP獲取MAC地址的實現程式碼PHPMac
- PHP 實現字串翻轉(包含中文漢字)的實現PHP字串
- c++11 實現列舉值到列舉名的轉換C++
- wasm + ffmpeg實現前端擷取視訊幀功能ASM前端
- PHP 陣列底層實現PHP陣列
- Java 利用列舉實現單例模式Java單例模式
- 遞迴實現指數型列舉遞迴
- 解決MySQL中文亂碼和插入中文不顯示的方法MySql
- 深入淺出 Java 中列舉的實現原理Java
- 127 PHP獲取網頁標題的3種實現方法程式碼例項PHP網頁
- OC中列舉寫法 以及 字串型別列舉實現探索字串型別
- PostgreSQL 原始碼解讀(232)- 查詢#125(NOT IN實現#3)SQL原始碼
- 【深入 PHP】PHP7 陣列的底層實現PHP陣列
- PHP 實現按奇偶排序陣列PHP排序陣列
- 7.1 實現程式記憶體塊列舉記憶體
- 小技巧分享:在 Go 如何實現列舉?Go
- 偽元素 content 出現中文亂碼
- PHP基於Redis訊息佇列實現的訊息推送的方法PHPRedis佇列
- Python佇列的三種佇列實現方法Python佇列
- Testng results報告出現中文亂碼和更新maven出現報錯現象實戰解決Maven
- php+redis實現延遲佇列PHPRedis佇列
- php底層原理之陣列實現PHP陣列
- PHP - 如何解決中文亂碼PHP
- 詳解 PHP 陣列的底層實現:HashTablePHP陣列
- PHP擷取html文章PHPHTML
- PHP 實現 form 統一提交的方法PHPORM
- MySql中表單輸入資料出現中文亂碼的解決方法MySql
- 使用JavaCV實現讀取視訊資訊及自動擷取封面圖Java
- LoadRunner中文出現亂碼的解決辦法
- 自己實現陣列的 `map`、`filter`、`find` 方法陣列Filter
- 資料結構之php實現佇列資料結構PHP佇列
- 資料結構之php實現陣列資料結構PHP陣列
- PHP實現摩斯電碼加密解密PHP加密解密
- HTTP狀態碼列舉(PHP)HTTPPHP
- Go 如何實現 PHP 的密碼加密解密GoPHP密碼加密解密
- PHP 樹-不需要遞迴的實現方法PHP遞迴