亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

PHP用mb_string函數庫處理與windows相關中文字符及Win環境下開啟PHP Mb_String方法

2024-09-04 11:42:26
字體:
來源:轉載
供稿:網友

昨天想批處理以前下載的一堆文件,把文件里的關鍵內容用正則匹配出來,集中處理。在操作文件時遇到一個問題,就是windows操作系統中的編碼問題.

PHP用mb_string函數庫處理與windows相關中文字符

昨天想批處理以前下載的一堆文件,把文件里的關鍵內容用正則匹配出來,集中處理。在操作文件時遇到一個問題,就是windows操作系統中的編碼問題。

我們都知道windows中(當然是中文版),文件名和文件內容等編碼都是gbk,而我們在開發過程中,IDE里的編碼則是UTF-8,(這里不討論為什么等等問題,

只考慮怎么把編碼轉變成一樣的)所以導致我寫的UTF-8編碼的正則模式字符串中的中文在gbk編碼的文件中并不能正確匹配。

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

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

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.

我們常使用:

$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的字符時,替換會被中斷。

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

Warning:iconv(); Charset parameter exceeds the maxium allowed length of 64 characters in Call Stack

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

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

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

mbstring
 
Multibyte Support enabled
Multibyte string engine libmbfl

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

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()函數差不多,只是它沒有對輸出函數的后綴修飾,它也沒有對字符串長度的明確限制。

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

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

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

最后介紹一下mb_string函數庫,它全名叫Multibyte String,它的很多方法都擴展自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

當然,它還有更多有特色的地方~

下面給大家介紹Windows環境下開啟PHP Mb_String方法

前幾天跑一個Php程序,需要轉字符編碼,可是一探服務器,居然說不支持Mb_String擴展。我查了Php的擴展庫里是有php_mbstring.dll這個文件的。

下面將打開的方法告訴大家

1.確保你的Windows/system32下有php_mbstring.dll這個文件,沒有就從你Php安裝目錄extensions里拷入Windows/system32里面。

2.在windows目錄下找到php.ini打開編輯,搜索mbstring.dll,找到

;extension=php_mbstring.dll

然后將前面的;號去掉,打開對組件的支持

3.重啟PHP服務(如果不會你可重新啟一下計算機)

4.完成

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人深夜直播免费观看| 少妇高潮 亚洲精品| 亚洲精品aⅴ中文字幕乱码| 欧美日韩电影在线观看| 日本高清久久天堂| 欧美丝袜一区二区| 北条麻妃一区二区三区中文字幕| 欧美在线www| 日韩美女中文字幕| 狠狠久久亚洲欧美专区| 欧美肥臀大乳一区二区免费视频| 第一福利永久视频精品| 麻豆国产va免费精品高清在线| 亚洲精品国精品久久99热| 欧美三级免费观看| 日韩精品欧美国产精品忘忧草| 欧美国产欧美亚洲国产日韩mv天天看完整| 国产欧美一区二区白浆黑人| 九九热这里只有精品免费看| 久久国产精品免费视频| 精品自拍视频在线观看| 精品国产成人av| 伊人久久大香线蕉av一区二区| 少妇高潮久久77777| 色偷偷偷亚洲综合网另类| 欧美多人乱p欧美4p久久| 在线成人激情视频| 一本久久综合亚洲鲁鲁| 亚洲欧美中文字幕| 亚洲天堂av在线免费| 国产欧美日韩视频| 91av网站在线播放| 欧美日韩亚洲一区二区三区| 岛国av一区二区| 久久国产精彩视频| 欧美亚洲成人xxx| 狠狠干狠狠久久| 成人黄色激情网| 欧美老妇交乱视频| 久久国产精品久久久久久久久久| 国产成人亚洲综合青青| 91免费看片在线| 懂色aⅴ精品一区二区三区蜜月| 日韩hd视频在线观看| 韩国日本不卡在线| 欧美第一黄色网| 成人黄色av免费在线观看| 欧美成人激情图片网| 136fldh精品导航福利| 日韩av在线电影网| 国产精品久久久久秋霞鲁丝| 亚洲影视九九影院在线观看| 亚洲成色777777在线观看影院| 亚州av一区二区| 久久久久久久久国产| 日韩在线视频中文字幕| 亚洲精品国产拍免费91在线| 精品国产自在精品国产浪潮| 中文字幕视频一区二区在线有码| 国产欧美精品日韩| 欧美日韩精品在线播放| 国产一区二区三区欧美| 亚洲精品国产精品自产a区红杏吧| 国产精品久久久久久中文字| 日本欧美在线视频| 久久综合电影一区| 日韩精品中文字幕有码专区| 亚洲精品91美女久久久久久久| 国产999视频| 久久激情视频免费观看| 国产精选久久久久久| 国语自产精品视频在线看一大j8| 国产一区二中文字幕在线看| 精品无人区太爽高潮在线播放| 日韩av影视综合网| 亚洲三级黄色在线观看| 91av免费观看91av精品在线| 自拍偷拍亚洲欧美| 国产在线精品播放| 欧美精品一区二区免费| 欧美最猛性xxxxx免费| 麻豆成人在线看| 蜜月aⅴ免费一区二区三区| 裸体女人亚洲精品一区| 国产精品成熟老女人| 精品呦交小u女在线| 日韩欧美亚洲国产一区| 亚洲成人久久一区| 欧美与黑人午夜性猛交久久久| 国产亚洲欧美日韩一区二区| 久久青草精品视频免费观看| 国产精品成人播放| 亚洲欧美激情一区| 91久久久久久久久| 97欧美精品一区二区三区| 欧美亚洲激情视频| 欧美亚洲另类激情另类| 国产成人在线一区二区| 2023亚洲男人天堂| 清纯唯美亚洲综合| 亚洲精品欧美日韩专区| 中文日韩电影网站| 国产成人精品视频| 69国产精品成人在线播放| 精品国产依人香蕉在线精品| 亚洲国产精品福利| 亚洲精品成人久久电影| 色先锋久久影院av| 91成人性视频| 亚洲影院色在线观看免费| 国产精品爽黄69| 国产精品专区h在线观看| 九九热精品视频国产| 热久久美女精品天天吊色| 亚洲国产日韩欧美在线99| 国产精品免费观看在线| 国产成人啪精品视频免费网| 久久91精品国产| 国产精品成人观看视频国产奇米| 国产精品一久久香蕉国产线看观看| 国产精品第8页| 欧美疯狂xxxx大交乱88av| 日韩不卡中文字幕| 一本色道久久综合亚洲精品小说| 久久久精品国产| 国产成人久久精品| 亚洲精品乱码久久久久久按摩观| 久久久久久久电影一区| 日韩欧美一区二区在线| 91精品国产91久久久久福利| 国产视频精品一区二区三区| 久久久国产一区二区| 欧美日韩中文字幕综合视频| 97国产精品视频| 自拍偷拍亚洲欧美| 国产精品一二三视频| 精品久久久久国产| 国产成人免费av| 国产精品激情av电影在线观看| 亚洲最大av网站| 久久精品视频亚洲| 26uuu日韩精品一区二区| 51视频国产精品一区二区| 亚洲v日韩v综合v精品v| 北条麻妃99精品青青久久| 美女久久久久久久久久久| 一区二区欧美激情| 国产免费一区二区三区在线观看| 日韩在线欧美在线国产在线| 精品久久久久久久中文字幕| 亚洲欧美三级伦理| 亚洲欧洲一区二区三区久久| 精品丝袜一区二区三区| 亚洲国产精品人人爽夜夜爽| 国产精品爽黄69天堂a| 精品久久久久久中文字幕| 欧美美最猛性xxxxxx| 中文字幕日韩欧美精品在线观看| 亚洲第一天堂av| 91久久精品国产| 视频一区视频二区国产精品| 欧美伊久线香蕉线新在线| 国产精品美女免费视频| 伊人久久大香线蕉av一区二区|