PHP mb_convert_encoding 獲取字符串編碼類型實(shí)現(xiàn)代碼
更新時(shí)間:2009年04月26日 01:03:59 作者:
mb_convert_encoding函數(shù)就是那個(gè)可以自動(dòng)識(shí)別原字符串編碼的函數(shù),但在使用中,發(fā)現(xiàn)GBK中的某些漢字被它轉(zhuǎn)成了亂碼。
后來又在手冊上找到了is_utf8函數(shù),這樣,再結(jié)合iconv函數(shù),我的問題就解決了。下面帖出這個(gè)函數(shù):
function is_utf8($string) {
return preg_match('%^(?:
[\x09\x0A\x0D\x20-\x7E] # ASCII
| [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
| \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
| [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
| \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
| \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
| [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
| \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
)*$%xs', $string);
} // function is_utf8
如果想深入研究,建議看下PHP手冊上的“Multibyte String Functions”這一部分的內(nèi)容。
復(fù)制代碼 代碼如下:
function is_utf8($string) {
return preg_match('%^(?:
[\x09\x0A\x0D\x20-\x7E] # ASCII
| [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
| \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
| [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
| \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
| \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
| [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
| \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
)*$%xs', $string);
} // function is_utf8
如果想深入研究,建議看下PHP手冊上的“Multibyte String Functions”這一部分的內(nèi)容。
相關(guān)文章
淺析php如何實(shí)現(xiàn)爬取數(shù)據(jù)原理
在本篇文章中,小編給大家分享了關(guān)于php如何實(shí)現(xiàn)爬取數(shù)據(jù)的原理知識(shí)點(diǎn),有興趣的朋友們參考下。2018-09-09利用Memcached在php下實(shí)現(xiàn)session機(jī)制 替換PHP的原生session支持
利用Memcached在php下實(shí)現(xiàn)session機(jī)制,替換PHP的原生session支持2010-08-08PHP設(shè)計(jì)模式之簡單投訴頁面實(shí)例
這篇文章主要為大家詳細(xì)介紹了PHP設(shè)計(jì)模式下簡單投訴頁面實(shí)例,感興趣的小伙伴們可以參考一下2016-02-02解決PHP超大文件下載,斷點(diǎn)續(xù)傳下載的方法詳解
本篇文章是對PHP超大文件下載,斷點(diǎn)續(xù)傳下載的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06Laravel模板引擎Blade中section的一些標(biāo)簽的區(qū)別介紹
這篇文章主要介紹了Laravel模板引擎Blade中section的一些標(biāo)簽的區(qū)別介紹,本文講解了@yield 與 @section、@show 與 @stop、@append 和 @override的區(qū)別,需要的朋友可以參考下2015-02-02