电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

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

瀏覽:7日期: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
相關文章:
主站蜘蛛池模板: 船用泵,船用离心泵,船用喷射泵,泰州隆华船舶设备有限公司 | 手术室净化厂家-成都做医院净化工程的公司-四川华锐-15年特殊科室建设经验 | 管理会计网-PCMA初级管理会计,中级管理会计考试网站 | 杭州厂房降温,车间降温设备,车间通风降温,厂房降温方案,杭州嘉友实业爽风品牌 | 冷却塔减速机器_冷却塔皮带箱维修厂家_凉水塔风机电机更换-广东康明冷却塔厂家 | 定量包装秤,吨袋包装称,伸缩溜管,全自动包装秤,码垛机器人,无锡市邦尧机械工程有限公司 | 口臭的治疗方法,口臭怎么办,怎么除口臭,口臭的原因-口臭治疗网 | 许昌奥仕达自动化设备有限公司| 上海璟文空运首页_一级航空货运代理公司_机场快递当日达 | 武汉刮刮奖_刮刮卡印刷厂_为企业提供门票印刷_武汉合格证印刷_现金劵代金券印刷制作 - 武汉泽雅印刷有限公司 | 干粉砂浆设备_干混砂浆生产线_腻子粉加工设备_石膏抹灰砂浆生产成套设备厂家_干粉混合设备_砂子烘干机--郑州铭将机械设备有限公司 | 洛阳防爆合格证办理-洛阳防爆认证机构-洛阳申请国家防爆合格证-洛阳本安防爆认证代办-洛阳沪南抚防爆电气技术服务有限公司 | 搜木网 - 木业全产业链交易平台,免费搜货、低价买货! | 螺钉式热电偶_便携式温度传感器_压簧式热电偶|无锡联泰仪表有限公司|首页 | 吸音板,隔音板,吸音材料,吸音板价格,声学材料 - 佛山诺声吸音板厂家 | 不锈钢闸阀_球阀_蝶阀_止回阀_调节阀_截止阀-可拉伐阀门(上海)有限公司 | 消泡剂-水处理消泡剂-涂料消泡剂-切削液消泡剂价格-东莞德丰消泡剂厂家 | 紫外荧光硫分析仪-硫含量分析仪-红外光度测定仪-泰州美旭仪器 | 旗杆生产厂家_不锈钢锥形旗杆价格_铝合金电动旗杆-上海锥升金属科技有限公司 | 进口便携式天平,外校_十万分之一分析天平,奥豪斯工业台秤,V2000防水秤-重庆珂偌德科技有限公司(www.crdkj.com) | 航空连接器,航空插头,航空插座,航空接插件,航插_深圳鸿万科 | 罗氏牛血清白蛋白,罗氏己糖激酶-上海嵘崴达实业有限公司 | 合肥网带炉_安徽箱式炉_钟罩炉-合肥品炙装备科技有限公司 | 河南中专学校|职高|技校招生-河南中职中专网 | 消泡剂_水处理消泡剂_切削液消泡剂_涂料消泡剂_有机硅消泡剂_广州中万新材料生产厂家 | 小程序开发公司_APP开发多少钱_软件开发定制_微信小程序制作_客户销售管理软件-济南小溪畅流网络科技有限公司 | 耐腐蚀泵,耐腐蚀真空泵,玻璃钢真空泵-淄博华舜耐腐蚀真空泵有限公司 | 土壤墒情监测站_土壤墒情监测仪_土壤墒情监测系统_管式土壤墒情站-山东风途物联网 | 武汉刮刮奖_刮刮卡印刷厂_为企业提供门票印刷_武汉合格证印刷_现金劵代金券印刷制作 - 武汉泽雅印刷有限公司 | 西安标准厂房_陕西工业厂房_西咸新区独栋厂房_长信科技产业园官方网站 | 金现代信息产业股份有限公司--数字化解决方案供应商 | 定制防伪标签_防伪标签印刷_防伪标签厂家-510品保防伪网 | 塑胶跑道_学校塑胶跑道_塑胶球场_运动场材料厂家_中国塑胶跑道十大生产厂家_混合型塑胶跑道_透气型塑胶跑道-广东绿晨体育设施有限公司 | 定硫仪,量热仪,工业分析仪,马弗炉,煤炭化验设备厂家,煤质化验仪器,焦炭化验设备鹤壁大德煤质工业分析仪,氟氯测定仪 | app开发|app开发公司|小程序开发|物联网开发||北京网站制作|--前潮网络 | 锡膏喷印机-全自动涂覆机厂家-全自动点胶机-视觉点胶机-深圳市博明智控科技有限公司 | 自动售货机_无人售货机_专业的自动售货机运营商_免费投放售货机-广州富宏主官网 | 除湿机|工业除湿机|抽湿器|大型地下室车间仓库吊顶防爆除湿机|抽湿烘干房|新风除湿机|调温/降温除湿机|恒温恒湿机|加湿机-杭州川田电器有限公司 | 滚塑PE壳体-PE塑料浮球-警示PE浮筒-宁波君益塑业有限公司 | MTK核心板|MTK开发板|MTK模块|4G核心板|4G模块|5G核心板|5G模块|安卓核心板|安卓模块|高通核心板-深圳市新移科技有限公司 | 招商帮-一站式网络营销服务|互联网整合营销|网络推广代运营|信息流推广|招商帮企业招商好帮手|搜索营销推广|短视视频营销推广 |