返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP如何使用mb_string处理windows中文字符
  • 301
分享到

PHP如何使用mb_string处理windows中文字符

2023-06-15 05:06:23 301人浏览 八月长安
摘要

这篇文章给大家分享的是有关PHP如何使用mb_string处理windows中文字符的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。我们都知道windows中(当然是中文版),文件名和文件内容等编码都是gbk,而我

这篇文章给大家分享的是有关PHP如何使用mb_string处理windows中文字符的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

我们都知道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中文字符”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: PHP如何使用mb_string处理windows中文字符

本文链接: https://lsjlt.com/news/278110.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • PHP如何使用mb_string处理windows中文字符
    这篇文章给大家分享的是有关PHP如何使用mb_string处理windows中文字符的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。我们都知道windows中(当然是中文版),文件名和文件内容等编码都是gbk,而我...
    99+
    2023-06-15
  • 详解PHP用mb_string处理windows中文字符
    我们都知道windows中(当然是中文版),文件名和文件内容等编码都是gbk,而我们在开发过程中,IDE里的编码则是UTF-8,(这里不讨论为什么等等问题,只考虑怎么把编码转变成一样...
    99+
    2024-04-02
  • PHP如何处理中文字符编码问题
    PHP如何处理中文字符编码问题,需要具体代码示例 在开发PHP应用程序时,处理中文字符编码问题是一个常见的挑战。特别是在处理用户输入、数据库操作以及输出到网页等场景中,正确处理中文字符...
    99+
    2024-04-02
  • PHP编程进阶:如何处理中文字符串不使用mb_substr()
    PHP编程进阶:如何处理中文字符串不使用mb_substr() 在PHP编程中,处理中文字符串时经常会用到mb_substr()函数来截取指定长度的字符串,特别是在...
    99+
    2024-03-15
    - php - 字符串处理 - 中文
  • python中如何处理文本字符
    这篇文章给大家分享的是有关python中如何处理文本字符的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。完整代码:strings = "我,是‘C|S;D|N!的:程【序】员#M,r&...
    99+
    2023-06-14
  • PHP如何正确处理中文字符长度计算
    标题:PHP如何正确处理中文字符长度计算 在Web开发中,处理中文字符长度计算是一项常见的技术任务。特别是在PHP开发中,由于中文字符和英文字符在字节数上的不同,很容易出现字符长度计算...
    99+
    2024-04-02
  • 如何使用 PHP 内置函数处理字符串?
    如何使用 PHP 内置函数处理字符串 简介PHP 提供了丰富的内置函数来处理字符串,这些函数提供了强大的文本操作功能。在这篇文章中,我们将探讨使用这些函数处理字符串的各种方法。 字符串...
    99+
    2024-04-22
    php 字符串处理 排列 lsp
  • Python中如何使用中文字符
    这期内容当中小编将会给大家带来有关Python中如何使用中文字符,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Python中文字符相关操作代码示例:#!/usr/bin/python  ...
    99+
    2023-06-17
  • php如何处理非法字符串
    在php中使用str_replace()函数对非法字符串进行处理,具体方法如下:str_replace()函数作用:php中str_replace()函数的作用是用于替换字符串中的字符。str_replace()函数语法:str_repla...
    99+
    2024-04-02
  • 如何在PHP中使用字符串
    引言 字符串是由一个或多个字符组成的序列,可以由字母、数字或符号组成。所有的书面通信都是由字符串组成的。因此,它们是任何编程语言的基础。 在本文中,您将学习如何创建和查看字符串的输出,如何使用转义序列...
    99+
    2023-09-18
    php 开发语言
  • Linux中如何使用paste命令处理字符串
    这篇文章给大家介绍Linux中如何使用paste命令处理字符串,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。名称:paste位置:/usr/bin/paste权限:所有用户作用:多个文件的对应的两行贴在一起,用法:pa...
    99+
    2023-06-13
  • MySQL中如何处理字符集
    这篇文章给大家介绍MySQL中如何处理字符集,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。  MySQL的字符集怎么处理  发送请求  客户端(character_set_client...
    99+
    2024-04-02
  • PHP编程中处理中文字符长度技巧
    PHP编程中处理中文字符长度技巧 在PHP编程中,处理中文字符长度是一个常见的问题,特别是在涉及到字符串截取、字符数量统计等操作时。由于中文字符在编码上与英文字符不同,一个中文字符可能...
    99+
    2024-04-02
  • php如何只获取中文字符
    这篇文章主要介绍“php如何只获取中文字符”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php如何只获取中文字符”文章能帮助大家解决问题。php中可用preg_match_all()配合正则表达式过...
    99+
    2023-06-30
  • php中文字符集如何设置
    今天小编给大家分享一下php中文字符集如何设置的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、字符集的基本概念字符集(Ch...
    99+
    2023-07-06
  • php中文字符如何转换成数字
    小编给大家分享一下php中文字符如何转换成数字,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!php中文字符转换成数字的方法:首先创建一个PHP示例文件;然后通过“function cn2num($string){...}”...
    99+
    2023-06-14
  • php字符串连接符如何使用
    在PHP中,可以使用.(点)作为字符串连接符。例如:```php$str1 = "Hello";$str2 = "World";$r...
    99+
    2023-08-30
    php
  • 如何在PHP中使用Windows接口来处理数组?
    PHP作为一种广泛使用的服务器端编程语言,具有处理数组的强大能力。在Windows操作系统中,PHP还提供了一些接口,使得开发者可以更加方便地对数组进行处理。本文将介绍如何使用Windows接口来处理数组。 一、Windows扩展 首先,我...
    99+
    2023-11-09
    windows 接口 数组
  • php转义字符如何使用
    在PHP中,可以使用反斜杠(\)来转义特殊字符。以下是一些常见的转义字符的示例:1. 转义双引号("):```php$str = "...
    99+
    2023-08-19
    php
  • PHP 字符串处理:如何去除右侧第一个字符?
    在PHP中处理字符串是非常常见的操作,而去除右侧第一个字符也是一个常见需求。在本文中,我将向您展示如何使用PHP代码实现去除右侧第一个字符的功能。 首先,让我们来看一个简单的字符串处理...
    99+
    2024-03-01
    php 字符串 处理
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作