首页 后端开发 php教程 PHP中strlen和mb_strlen的区别详解

PHP中strlen和mb_strlen的区别详解

Jun 20, 2016 pm 01:03 PM
php技巧

PHP中,strlenmb_strlen两个函数都是用来求字符串长度的,也是我们日常工作中会经常使用到的函数之一,虽然不算难理解,但是对于一些初学者来说,如果不看手册的话,可能还是分不清楚它们的区别。

好的,不废话了,下面就让我们通过例子来给大家讲解这两者之间的区别吧。

<?php /* 测试时文件的编码方式注意一定要是UTF8  */
$str=&#39;中文a字1符&#39;;
echo strlen($str).&#39;<br>';//14
echo mb_strlen($str,'utf8').'<br>';//6
echo mb_strlen($str,'gbk').'<br>';//8
echo mb_strlen($str,'gb2312').'<br>';//10
?>
登录后复制

通过结果分析,我们可以看出在通过strlen计算时,编码格式为UTF8的中文字符是3个长度,所以“中文a字1符”长度是3*4+2=14,而 在通过mb_strlen计算时,选定内码为UTF8,则会将一个中文字符当作长度1来计算,所以“中文a字1符”长度是6 .

利用这两个函数则可以联合计算出一个中英文混排的串的占位是多少(一个中文字符的占位是2,英文字符是1)

echo (strlen($str) + mb_strlen($str,'UTF8')) / 2;
登录后复制

例如 :

“中文a字1符” 的strlen($str)值是14,

mb_strlen($str)值是6,

则可以计算出“中文a字1符”的占位是10.

echo mb_internal_encoding();
登录后复制

PHP内置的字符串长度函数strlen是无法正确处理中文字符串的,它能得 到的仅仅只是字符串所占的字节数。而对于GB2312的中文编码,strlen得到的值是汉字个数的2倍,再看UTF-8编码的中文,就是3倍的差异了 (在 UTF-8编码下,一个汉字占3个字节)。

采用mb_strlen函数可以较好地解决这个问题。mb_strlen的用法和 strlen类似,只不过它有第二个可选参数用于指定字符编码。例如得到UTF-8的字符串$str长度,可以用 mb_strlen($str,'UTF-8')。如果省略第二个参数,则会使用PHP的内部编码。内部编码可以通过 mb_internal_encoding()函数得到。

注意:mb_strlen并不是PHP的核心函数,使用前必须确保在php.ini中加载了php_mbstring.dll这一项,即确保 “extension=php_mbstring.dll”这一行存在并且没有被注释掉,否则会出现未定义函 数的问题。也就不能使用这个函数了。包括mb_开头的一些函数,如mb_substr()函数等等。


本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

PHP中的文件上传和下载技巧详解 PHP中的文件上传和下载技巧详解 Jun 25, 2023 pm 05:57 PM

PHP是一种非常流行的服务器端编程语言,它在网站开发中被广泛应用。其中,文件上传和下载是网站常用的功能之一,而PHP提供了丰富的函数和技巧来实现这些功能。在本文中,我们将详细介绍PHP中的文件上传和下载技巧,让你能够更加高效地开发网站。文件上传文件上传是指把本地计算机中的文件发送到远程服务器,上传文件后我们可以对这些文件进行存储、处理和展示等操作。在PHP中

PHP快手API接口调用技巧:如何处理接口返回的错误信息 PHP快手API接口调用技巧:如何处理接口返回的错误信息 Jul 20, 2023 pm 11:22 PM

PHP快手API接口调用技巧:如何处理接口返回的错误信息在使用PHP进行快手API接口调用时,我们经常会遇到接口返回错误的情况。对于处理接口返回的错误信息,我们需要进行合适的处理和反馈,以便提高应用程序的稳定性和用户体验。本文将介绍一些处理接口返回错误信息的技巧,并提供相应的代码示例。使用try-catch捕获异常在调用API接口时,可能会发生一些异常错误,

PHP编程技巧:如何处理图片缩放 PHP编程技巧:如何处理图片缩放 Aug 19, 2023 am 10:36 AM

PHP编程技巧:如何处理图片缩放在现代网页设计中,图片是不可或缺的一部分,而图片缩放是常见的操作之一。无论是在展示图片集合,还是在响应不同大小设备的需求上,图片缩放都起到了重要的作用。本文将介绍如何使用PHP编程语言处理图片缩放,并附上代码示例供参考。一、使用GD库进行图片缩放GD库是PHP中一个强大的图像处理库,我们可以使用它来实现图片缩放功能。首先,确保

PHP编程技巧:快速定位数组缺失数字的方法 PHP编程技巧:快速定位数组缺失数字的方法 Mar 01, 2024 pm 04:27 PM

PHP编程技巧:快速定位数组缺失数字的方法在编程中,经常会遇到需要检查数组中是否缺少某些数字的情况。这时候,我们需要一种快速有效的方法来定位数组中缺失的数字,以便及时处理。本文将介绍一种基于PHP的编程技巧,通过具体的代码示例来展示快速定位数组中缺失数字的方法。1.方法一:使用循环遍历数组首先,我们可以通过循环遍历数组的方式来检查数组中缺失的数字。具体步骤

PHP中的分页技术在框架中的应用方法详解 PHP中的分页技术在框架中的应用方法详解 Jun 09, 2023 am 11:40 AM

随着互联网的快速发展,越来越多的网站需要实现数据分页功能,以提高用户的浏览体验。在Web开发中,PHP是最流行的服务器端编程语言之一,而数据分页功能是PHP开发中不可缺少的技术。本文将介绍PHP中的分页技术在框架中的应用方法,并对比不同的分页方案的优缺点。一、传统PHP分页方法在传统PHP开发中,实现数据分页功能需要编写较多的代码,并且需要在每个页面中进行重

PHP高并发处理技巧解析 PHP高并发处理技巧解析 Aug 10, 2023 pm 06:53 PM

PHP高并发处理技巧解析随着互联网的发展,对于网站的并发访问量要求也越来越高。而PHP作为一种开发网站的编程语言,面对高并发的访问压力,需要一些特殊的处理技巧来提高性能和稳定性。本文将介绍一些PHP高并发处理的技巧,并提供代码示例。使用PHP-FPMPHP-FPM(FastCGIProcessManager)是PHP官方提供的一个进程管理器,它可以有效地

深入了解PHP中替换换行的技巧 深入了解PHP中替换换行的技巧 Mar 20, 2024 pm 06:42 PM

替换PHP中的换行符是在实际开发中经常会遇到的问题,特别是在处理文本数据时。换行符在不同操作系统中的表示方式可能不一样,通常在Windows系统中是"",在Linux系统中是""。因此,我们需要对换行符进行统一处理,以确保文本数据的格式正常。本文将深入探讨PHP中替换换行符的技巧,并提供具体的代码示例。1.使用PHP内置函数处理换行符PHP提供了一些内置函

PHP查询语句优化技巧分享 PHP查询语句优化技巧分享 Mar 24, 2024 pm 12:51 PM

标题:PHP查询语句优化技巧分享在开发Web应用程序时,优化数据库查询是至关重要的环节,它能够显着提升应用程序的性能和响应速度。在PHP中,通过优化查询语句可以有效地减少数据库负担,提高系统性能。本文将分享一些PHP查询语句优化的技巧和具体的代码示例。 1.使用索引在数据库表中适当地创建索引可以加快数据查询的速度。在PHP中,可以通过在查询语句中指定使用的索

See all articles