国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

詳解PHP用mb_string處理windows中文字符

瀏覽:4日期:2022-09-07 11:50:04

我們都知道windows中(當然是中文版),文件名和文件內容等編碼都是gbk,而我們在開發過程中,IDE里的編碼則是UTF-8,(這里不討論為什么等等問題,只考慮怎么把編碼轉變成一樣的)所以導致我寫的UTF-8編碼的正則模式字符串中的中文在gbk編碼的文件中并不能正確匹配。

一開始,我并沒有什么辦法,試過把PHP腳本文件的編碼也改成GBK,也可以用,但是想到這種方法太low了,所以找一找PHP中有沒有函數可以滿足我的需求。

這時,我想到了以前在處理windows中的文件名時用的函數iconv(),其函數原型如下:

stringiconv(string$in_charset,string$out_charset,string$str)

Performsacharactersetconversiononthestringstrfromin_charsettoout_charset.

我們常使用:

$out_charset=’utf-8’;$fileName=iconv($fileName,$out_charset,’gbk’);

來處理文件名,將文件名改從gbk改為UTF-8而內容不變。

手冊翻譯附加:

如果你在輸出字符串$out_charset后面添加//TRANSLIT即$out_charset=’utf-8//TRANSLIT’,在遇到不能轉換為UTF-8的字符時,程序會自動替換為一個相似字符的UTF-8字符; 如果你在輸出字符串$out_charset后面添加//IGNORE即$out_charset=’utf-8//IGNORE’,在遇到不能轉換為UTF-8的字符時,程序會自動跳過這個字符。 如果你什么都沒加,就在遇到不能替換成UTF-8的字符時,替換會被中斷。

但是,我在用這個函數處理時,結果卻是這樣:

詳解PHP用mb_string處理windows中文字符

意思是iconv()函數能處理的最大字符數只有64,一般的文件名大小,而我的文件內容很顯然不止64個字符。

沒有辦法,我只好再次各種翻找別的函數。

直到我發現了mb_string函數庫,這個函數庫一般都在PHP環境里集成,我們可以在phpinfo()里找到它。

詳解PHP用mb_string處理windows中文字符

mb_string函數里有一個mb_convert_encoding()函數,可以將一個字符串的編碼改變,其函數原型如下:

stringmb_convert_encoding(string$str,string$to_encoding[,mixed$from_encoding])

Convertsthecharacterencodingofstringstrtoto_encodingfromoptionallyfrom_encoding.

基原型跟iconv()函數差不多,只是它沒有對輸出函數的后綴修飾,它也沒有對字符串長度的明確限制。

而且我們看到$from_encoding是可選的,它可以自動識別源編碼。

因為找不到一個確切的無法轉碼的字符,也不知道它遇到無法轉碼的字符會怎么處理。

通過mb_convert_encoding()函數,將整個文件處理了一下,于是,問題順利解決。

最后介紹一下mb_string函數庫,它全名叫MultibyteString,它的很多方法都擴展自PHP自身的string函數庫,函數名在原函數的前面加了'mb_',這些函數除了擁有原函數的作用外,還在可選參數的最后加入了一個$encoding的可選參數,這個參數可以規定函數以什么樣的編碼方式來處理字符串。

例如strpos()函數,找到一個字符串在另一個字符串中的位置。

strpos('歡迎來訪問','問',0)返回的結果是12,因為腳本是UTF-8編碼,而將字符串轉為UTF-8編碼后,每個中文字符會占用3個字節。

而在mb_strpos()函數中,mb_strpos('歡迎來訪問','問',0,’utf-8’)則會返回4,它會將字符串當作已經轉UTF-8的狀態執行。

而mb_strpos('歡迎來訪問','問',0,’gbk’)會返回6

以上就是詳解PHP用mb_string處理windows中文字符的詳細內容,更多關于PHP用mb_string處理windows中文字符的資料請關注好吧啦網其它相關文章!

標簽: PHP
相關文章:
主站蜘蛛池模板: 亚洲欧美日韩中文字幕在线 | 国产精品亚洲一区在线播放 | 国产在线精品福利一区二区三区 | 欧美成人午夜视频免看 | 国产成人精品曰本亚洲 | 成年女人在线视频 | 中文字幕一区二区三区亚洲精品 | 日日操干 | 国产成人毛片视频不卡在线 | 欧美一级视频在线高清观看 | 一a一级片| 日韩特级黄色片 | 国产成人精品999在线观看 | 亚洲国产天堂久久精品网 | 特黄日韩免费一区二区三区 | 台湾三级香港三级在线中文 | 日鲁夜鲁鲁狠狠综合视频 | 亚洲国产网站 | 久久精品国产亚洲aa | 久久久国产成人精品 | 久草免费在线观看 | 久久草在线观看 | 9cao在线精品免费 | 成人免费网站在线观看 | 免费看欧美日韩一区二区三区 | a级毛片毛片免费很很综合 a级毛片免费 | 午夜影院黄 | 精品一区二区三区免费视频 | 欧美视频二区 | 国产高清在线精品一区二区三区 | 日韩亚洲成a人片在线观看 日韩亚洲精品不卡在线 | 一级一级 a爱片免费视频 | 网站三级 | 国产精品亚洲精品影院 | 国产一级高清 | 久久99久久精品免费思思 | 一级做a爰片久久毛片看看 一级做a爰片久久毛片鸭王 | 国产成人啪精品视频免费软件 | 亚洲综合色一区二区三区小说 | 国产高清一级视频在线观看 | 国产男女爽爽爽免费视频 |