《PHP實例:PHP用mb_string函數庫處理與windows相關中文字符及Win環境下開啟PHP Mb_String方法》要點:
本文介紹了PHP實例:PHP用mb_string函數庫處理與windows相關中文字符及Win環境下開啟PHP Mb_String方法,希望對您有用。如果有疑問,可以聯系我們。
PHP用mb_string函數庫處理與windows相關中筆墨符PHP實戰
昨天想批處理以前下載的一堆文件,把文件里的關鍵內容用正則匹配出來,集中處理.在操作文件時遇到一個問題,便是windows操作系統中的編碼問題.PHP實戰
我們都知道windows中(當然是中文版),文件名和文件內容等編碼都是gbk,而我們在開發進程中,IDE里的編碼則是UTF-8,(這里不討論為什么等等問題,PHP實戰
只考慮怎么把編碼轉釀成一樣的)所以導致我寫的UTF-8編碼的正則模式字符串中的中文在gbk編碼的文件中并不能正確匹配.PHP實戰
一開始,我并沒有什么方法,試過把PHP腳本文件的編碼也改成GBK,也可以用,但是想到這種方法太low了,所以找一找PHP中有沒有函數可以滿足我的需求.PHP實戰
這時,我想到了以前在處置windows中的文件名時用的函數iconv(),其函數原型如下:PHP實戰
string iconv ( string $in_charset , string $out_charset , string $str ) Performs a character set conversion on the string str from in_charset to out_charset.
咱們常使用:PHP實戰
$out_charset='utf-8'; $fileName=iconv($fileName,$out_charset,'gbk');
來處置文件名,將文件名改從gbk改為UTF-8而內容不變.PHP實戰
手冊翻譯附加:PHP實戰
如果你在輸出字符串$out_charset后面添加//TRANSLIT即$out_charset='utf-8//TRANSLIT',在遇到不克不及轉換為UTF-8的字符時,程序會自動替換為一個相似字符的UTF-8字符;
PHP實戰
如果你在輸出字符串$out_charset后面添加//IGNORE即$out_charset='utf-8//IGNORE',在遇到不克不及轉換為UTF-8的字符時,程序會自動跳過這個字符.
PHP實戰
如果你什么都沒加,就在遇到不克不及替換成UTF-8的字符時,替換會被中斷.
但是,我在用這個函數處理時,結果卻是這樣:PHP實戰
PHP實戰
意思是iconv()函數能處置的最大字符數只有64,一般的文件名大小,而我的文件內容很顯然不止64個字符.PHP實戰
沒有方法,我只好再次各種翻找別的函數.PHP實戰
直到我發現了mb_string函數庫,這個函數庫一般都在PHP情況里集成,我們可以在phpinfo()里找到它.PHP實戰
PHP實戰
mb_string函數里有一個mb_convert_encoding()函數,可以將一個字符串的編碼轉變,其函數原型如下:PHP實戰
string mb_convert_encoding ( string $str , string $to_encoding [, mixed $from_encoding ] ) Converts the character encoding of string str to to_encoding from optionally from_encoding.
基原型跟iconv()函數差不多,只是它沒有對輸出函數的后綴修飾,它也沒有對字符串長度的明白限制.PHP實戰
而且我們看到$from_encoding是可選的,它可以自動辨認源編碼.PHP實戰
因為找不到一個確切的無法轉碼的字符,也不知道它遇到無法轉碼的字符會怎么處置.PHP實戰
通過mb_convert_encoding()函數,將整個文件處理了一下,于是,問題順利辦理.PHP實戰
最后介紹一下mb_string函數庫,它全名叫Multibyte String,它的很多辦法都擴展自PHP自身的string函數庫,函數名在原函數的前面加了"mb_",這些函數除了擁有原函數的作用外,還在可選參數的最后加入了一個$encoding的可選參數,這個參數可以規定函數以什么樣的編碼方式來處理字符串.PHP實戰
例如strpos()函數,找到一個字符串在另一個字符串中的地位.PHP實戰
strpos("歡迎來拜訪","問",0)返回的結果是12,因為腳本是UTF-8編碼,而將字符串轉為UTF-8編碼后,每個中文字符會占用3個字節.PHP實戰
而在mb_strpos()函數中,mb_strpos("歡迎來拜訪","問",0,'utf-8')則會返回4,它會將字符串當作已經轉UTF-8的狀態執行.PHP實戰
而mb_strpos("歡迎來拜訪","問",0,'gbk')會返回6PHP實戰
當然,它還有更多有特色的處所~PHP實戰
下面給大家介紹Windows環境下開啟PHP Mb_String辦法PHP實戰
前幾天跑一個Php程序,必要轉字符編碼,可是一探服務器,居然說不支持Mb_String擴展.我查了Php的擴展庫里是有php_mbstring.dll這個文件的.PHP實戰
下面將打開的辦法告訴大家PHP實戰
1.確保你的Windows/system32下有php_mbstring.dll這個文件,沒有就從你Php安裝目次extensions里拷入Windows/system32里面.PHP實戰
2.在windows目錄下找到php.ini打開編纂,搜索mbstring.dll,找到
;extension=php_mbstring.dllPHP實戰
然后將前面的;號去失落,打開對組件的支持PHP實戰
3.重啟PHP服務(假如不會你可重新啟一下計算機)PHP實戰
4.實現PHP實戰
《PHP實例:PHP用mb_string函數庫處理與windows相關中文字符及Win環境下開啟PHP Mb_String方法》是否對您有啟發,歡迎查看更多與《PHP實例:PHP用mb_string函數庫處理與windows相關中文字符及Win環境下開啟PHP Mb_String方法》相關教程,學精學透。維易PHP學院為您提供精彩教程。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/8426.html