PHP使用mb_string库处理与窗口相关的汉字 在Win环境下打开PHP Mb_String方法
使用PHP mb_string库处理与windows相关的汉字。
我想把昨天之前下载的一堆文件进行批量处理,有规律地匹配文件中的关键内容进行集中处理。操作文件时遇到的一个问题是windows操作系统中的编码问题。
众所周知,在windows(当然是中文版)中,文件名和文件内容的编码是gbk,而在我们的开发过程中,IDE中的编码是UTF-8。(这里不讨论为什么等等。
只考虑如何将编码转换成相同的),所以我写的UTF-8编码的正则模式字符串中的中文在gbk编码的文件中无法正确匹配。
起初,我没有任何办法。我试图将PHP脚本文件的编码更改为GBK,我可以使用它。但是我觉得这个方法太低了,就问PHP里面有没有能满足我需求的函数。
这时我想到了之前在windows中处理文件名时使用的函数iconv(),它的原型如下:
字符串图标(字符串$ in _ charset,字符串$ out _ charset,字符串$ str)对字符串执行从in _ charset到out _ charset的字符集转换。
$ out _ charset=' utf-8 ';$fileName=iconv($fileName,$out_charset,' gbk ');要处理文件名,请在不更改内容的情况下将文件名从gbk更改为UTF-8。
手动翻译附件:
如果在输出字符串$out_charset后添加//translate,即$ out _ charset=' UTF-8//translate ',程序会自动将不能转换为UTF-8的字符替换为类似字符的UTF-8字符;
如果在输出字符串$out_charset后添加//IGNORE,即$out_charset='utf-8//IGNORE ',当遇到无法转换为utf-8的字符时,程序会自动跳过该字符。
如果不添加任何内容,当遇到无法用UTF-8替换的字符时,替换会被中断。然而,当我使用这个函数时,结果是这样的:
意味着iconv()函数可以处理的最大字符数只有64个,是平均文件名大小,而我的文件内容明显超过64个字符。
没有办法,只好重新翻找其他功能。
直到我找到了通常集成在PHP环境中的mb_string库,我们才能在phpinfo()中找到它。
mb_string函数中有一个mb_convert_encoding()函数,可以改变字符串的编码。其功能原型如下:
string MB _ convert _encoding(string $ str,string $to_encoding [,Mixed $ from _ encoding])将字符串的字符编码转换为to_encoding(可选自_ encoding)。基本原型类似于iconv()函数,只是它没有修改输出函数的后缀,也没有明确限制字符串的长度。
我们看到$from_encoding是可选的,它可以自动识别源编码。
因为找不到一个确切的不能转码的角色,遇到不能转码的角色也不知道怎么办。
整个文件通过mb_convert_encoding()函数处理,问题顺利解决。
最后介绍mb_string函数库,它的全称是Multibyte string,它的很多方法都是从PHP的string函数库扩展而来的。函数名前面是“mb_”。这些函数不仅有原函数的功能,还在可选参数的末尾增加了一个可选参数$encoding,可以指定函数使用什么编码方式处理字符串。
例如,strpos()函数查找一个字符串在另一个字符串中的位置。
strpos('欢迎访问',' ask ',0)返回的结果是12,因为脚本是UTF-8编码,将字符串转换为UTF-8编码后,每个汉字将占用3个字节。
在MB _ strps()函数中,MB _ strps('欢迎访问',' ask ',0,' utf-8 ')将返回4,它将执行该字符串,就像它已被转换为UTF-8一样。
而mb_strpos('欢迎访问',' ask ',0,' gbk ')将返回6。
当然,它还有更有特色的地方~
下面介绍在Windows环境下打开PHP Mb_String方法。
几天前,我运行了一个Php程序,它需要字符编码。然而,当我检查服务器时,我实际上说我不支持Mb_String扩展。我检查了Php的扩展数据库,找到了文件php_mbstring.dll.
下面告诉大家怎么打开。
1.请确保您在Windows/system32下有文件php_mbstring.dll,如果没有,请将其从您的php安装目录扩展复制到Windows/system32中。
2.在windows目录下找到php.ini,打开编辑,搜索mbstring.dll,找到;扩展名=php_mbstring.dll
然后把前面的;不,打开组件支持。
3.重启PHP服务(如果没有,可以重启电脑)。
4.完成。
版权声明:PHP使用mb_string库处理与窗口相关的汉字 在Win环境下打开PHP Mb_String方法是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。