PHP學(xué)習(xí)筆記之字符串編碼的轉(zhuǎn)換和判斷
iconv('GBK', 'UTF-8//IGNORE', '腳本之家'); // 將字符串由 GBK 編碼轉(zhuǎn)換為 UTF-8 編碼
但 iconv 只能解決編碼預(yù)先知道的情況,如果字符串編碼未知,則需要先探測(cè)其編碼,這時(shí)可能會(huì)用到 mb_string 擴(kuò)展庫(kù):
mb_detect_encoding('腳本之家');
可是 mb_detect_encoding 存在一個(gè)硬傷,經(jīng)常出現(xiàn)判斷不準(zhǔn)確的情況?;蛟S這樣就可以解決:
// 使用 iconv 轉(zhuǎn)換并判斷是否等值,效率不高
function is_utf8 ($str) {
if ($str === iconv('UTF-8', 'UTF-8//IGNORE', $str)) {
return 'UTF-8';
}
}
// 多種編碼的情況
function detect_encoding ($str) {
foreach (array('GBK', 'UTF-8') as $v) {
if ($str === iconv($v, $v . '//IGNORE', $str)) {
return $v;
}
}
}
通過以上方式得到字符串編碼信息后,就可以利用 iconv 或 mb_convert_encoding 來轉(zhuǎn)換編碼了。
相關(guān)文章
PHP MVC模式在網(wǎng)站架構(gòu)中的實(shí)現(xiàn)分析
MVC模式在網(wǎng)站架構(gòu)中十分常見。它允許我們建立一個(gè)三層結(jié)構(gòu)的應(yīng)用程式,從代碼中分離出有用的層,幫助設(shè)計(jì)師和開發(fā)者協(xié)同工作以及提高我們維護(hù)和擴(kuò)展既有程式的能力。2010-03-03
php 3行代碼的分頁(yè)算法(求起始頁(yè)和結(jié)束頁(yè))
涉及到分頁(yè)時(shí), 除非只顯示上一頁(yè)/下一頁(yè), 否則需要計(jì)算起始頁(yè)和結(jié)束頁(yè). 看過很多代碼都是用大量的if-else來實(shí)現(xiàn), 代碼量大, 又不簡(jiǎn)潔. 現(xiàn)在提供一種只需要3行代碼的算法.2009-10-10
基于php中echo用逗號(hào)和用點(diǎn)號(hào)的區(qū)別詳解
下面小編就為大家分享一篇基于php中echo用逗號(hào)和用點(diǎn)號(hào)的區(qū)別詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-01-01
Laravel5.3+框架定義API路徑取消CSRF保護(hù)方法詳解
這篇文章主要介紹了Laravel框架定義API路徑取消CSRF保護(hù),需要的朋友可以參考下2020-04-04
php獲取ip的三個(gè)屬性區(qū)別介紹(HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)
獲取用戶IP地址的三個(gè)屬性的區(qū)別HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR,需要的朋友可以參考下2012-09-09
PHP中十六進(jìn)制顏色與RGB顏色值互轉(zhuǎn)的方法
今天小編就為大家分享一篇關(guān)于PHP中十六進(jìn)制顏色與RGB顏色值互轉(zhuǎn)的方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-03-03

