首页 > 后端开发 > 正文

strlen()与mb_strlen的作用分别是什么?

2024-09-01 08:19:02 | 我爱编程网

strlen()与mb_strlen的作用分别是什么?相关内容,小编在这里做了整理,希望能对大家有所帮助,关于strlen()与mb_strlen的作用分别是什么?信息,一起来了解一下吧!

本文目录一览:

strlen()与mb_strlen的作用分别是什么?

PHP判断是中文还是英文

/*
判断输入是否是纯数字,英文,汉字等
利用php的mb_strlen和strlen函数就可以轻松得知字符串的构成是全英文、中英混合、全中文。
1: 如果strlen返回的字符长度和mb_strlen以当前编码计算的长度一致,则为纯英文字符串
2: 如果strlen返回的字符长度和mb_strlen以当前编码计算的长度不一致,并且strlen返回值和mb_strlen返回值求余后得0 则为全汉字
3: 如果strlen返回的字符长度和mb_strlen以当前编码计算的长度不一致,并且strlen返回值和mb_strlen返回值求余后不为0 则为中英混合

*/
<?php
$str = "123456abc汉字";
$x = mb_strlen($str, 'gb2312');
$y = strlen($str);
echo "-----------$str----------<br>";
echo "x: ".$x."<br>";
echo "y: ".$y."<br>";

?>

strlen()与mb_strlen的作用分别是什么?

strlen()与mb_strlen的作用分别是什么?

在PHP中,strlen与mb_strlen是求字符串长度的函数,但是对于一些初学者来说,如果不看手册,也许不太清楚其中的区别。
下面通过例子,讲解这两者之间的区别。
先看例子:
<?php //测试时文件的编码方式要是UTF8 $str='中文a字1符'; echo strlen($str).'<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”这一行存在并且没有被注释掉,否则会出现未定义函 数的问题。

strlen()与mb_strlen的作用分别是什么?

php如何支持mb_strlen如何使用php

我爱编程网(https://www.52biancheng.com)小编还为大家带来php如何支持mb_strlen如何使用php的相关内容。

PHP字符串长度计算strlen()函数使用介绍

strlen()函数和mb_strlen()函数

在PHP中,函数strlen()返回字符串的长度。功能原型如下:

复制代码

代码如下: 我爱编程网

(同Internationalorganizations)国际组织

strlen(字符串

string_input);

参数string_input是要处理的字符串。

函数的作用是:返回字符串的字节长度。一个英文字母,一个数字,各种符号都占一个字节,长度都是1。中午字符占用两个字节,所以中午字符的长度是2。例如

复制代码

代码如下:

www.sunchis.com);

回声

strlen(三知发展网”);

?www.sunchis.com);运行结果:15

“回声

strlen(三知发展网”);运行结果:15

这里有个问题,一个汉字不占2个字节吗?“三支开发网”,明明是五个汉字,运行结果怎么会是15?

原因是:在计算strlen()时,一个UTF-8汉字将被视为长度为3。中英文混用的情况下,如何准确计算字符串的长度?这里要介绍另一个函数mb_strlen()。mb_strlen()函数与strlen()几乎相同,除了一个指定字符集编码的附加参数。功能原型是:

复制代码

代码如下:

(同Internationalorganizations)国际组织

mb_strlen(字符串

字符串输入,

线

编码);

PHP内置的字符串长度函数strlen无法正确处理中文字符串,它只得到字符串占用的字节数。对于GB2312的中文编码,strlen得到的值是汉字数的两倍,而对于UTF-8的中文编码,则相差三倍(在UTF-8下,一个汉字占用3个字节)。

因此,下面的代码可以准确地计算出中文字符串的长度:

复制代码

代码如下:

回声

strlen($str)。"

//结果:22

回声

mb_strlen($str,

//结果:12

$strlen

=

(strlen($str)mb_strlen($str,

回声

$strlen

//结果:17

?UTF-8),如果省略第二个参数,将使用PHP的内部编码。内部编码可以通过mb_internal_encoding()函数获得。需要注意的是,mb_strlen不是PHP核心函数。在使用之前,需要确保php.ini中加载了php_mbstring.dll,也就是确保“extension=php_mbstring.dll”这一行存在,并且没有被注释掉,否则会出现函数未定义的问题。

以上就是strlen()与mb_strlen的作用分别是什么?全部内容了,了解更多相关信息,关注我爱编程网。更多相关文章关注我爱编程网:www.52biancheng.com

免责声明:文章内容来自网络,如有侵权请及时联系删除。
与“strlen()与mb_strlen的作用分别是什么?”相关推荐
strlen()与mb_strlen的作用分别是什么
strlen()与mb_strlen的作用分别是什么

php的字符串strlen()方法PHP中的字符串长度获取利器:strlen()方法详解在PHP开发中,字符串是不可或缺的数据类型,经常用于文本的存储和处理。当我们需要知道一个字符串的长度时,一个强大而实用的内置函数就是strlen()。本文将深入介绍如何使用strlen()方法来获取字符串的长度,并对其进行详细的解析。一、strlen()方法的定义与语法strle

2024-10-19 02:51:02
java中jre,跟jdk的作用分别是什么?
java中jre,跟jdk的作用分别是什么?

java中jre,跟jdk的作用分别是什么?jre是JavaRuntimeEnviroment是指Java的运行环境,是面向Java程序的使用者,而不是开发者。jdk就是JavaDevelopmentKit.简单的说JDK是面向开发人员使用的SDK,它提供了Java的开发环境和运行环境。SDK是SoftwareDevelopmentKit一般指软件开发包,可以包括函数库、编译程序等。

2024-06-30 11:21:10
php语言中echo 与print 的区别是什么?
php语言中echo 与print 的区别是什么?

php语言中echo与print的区别是什么?echo是语法结构,也就是关键字,不是函数。使用的时候不用加括号,加上也可以。显示多个值的时候可以用逗号隔开。只支持基本类型,布尔型除外,echotrue的时候显示1,echofalse的时候啥都没有。print和echo基本一致。但是print不支持逗号分隔多个显示变量的语法。print_r是函数,不仅可以打印变量的的值,还能显示变

2024-12-12 12:49:53
Java主要应用领域分别是什么?
Java主要应用领域分别是什么?

Java主要应用领域分别是什么?【导语】Java是现在社会社会上比较火的编程语言,一方面是因为语言的自我魅力,另一方面是因为应用领域比较广泛,在嵌入式领域、大数据技术、软件工具、网站应用等方面,丢可以使用,下面就给大家进行Java主要应用领域的具体介绍,一起来看看吧。1、嵌入式领域Java在嵌入式领域也有很大的应用。你只需要130KB就能够使用Java技术(在一块小的芯片或

2024-04-15 14:50:23
在php中self与$this的分别(php this和self的区别)
在php中self与$this的分别(php this和self的区别)

在php中self与$this的分别1、意思上的区别self代表类,$this代表对象(self是引用静态类的类名,而$this是引用非静态类的实例名)2、用法上的区别能用$this的地方一定使用self,能用self的地方不一定能用$this。扩展资料:Python中self用法详解1、以Student类为例,在Python中,定义类如下:cla

2024-07-31 22:46:05
析构函数与构造函数的区别是什么呢?
析构函数与构造函数的区别是什么呢?

析构函数与构造函数的区别是什么呢?析构函数(destructor)与构造函数相反,当对象结束其生命周期时(对象所在的函数已调用完毕),系统自动执行析构函数。主要作用在于清理对象,释放对象占用的资源,如内存、文件句柄等。析构函数在对象生命周期结束时自动调用,无需程序员手动调用。它通常用于执行与创建对象相反的操作,如关闭文件、释放内存等。析构函数的名称通常以“~”开头,例如~MyClass()。

2024-10-30 22:14:22
在php中self与$this的分别(构造函数的应用)
在php中self与$this的分别(构造函数的应用)

在php中self与$this的分别1、意思上的区别self代表类,$this代表对象(self是引用静态类的类名,而$this是引用非静态类的实例名)2、用法上的区别能用$this的地方一定使用self,能用self的地方不一定能用$this。扩展资料:Python中self用法详解1、以Student类为例,在Python中,定义类如下:cla

2024-07-30 21:12:21
PHP中  $row['goods_name']  和 $goods.formated_goods_price  中的 “[ ]”“  .”分别是什么意思??
PHP中 $row['goods_name'] 和 $goods.formated_goods_price 中的 “[ ]”“ .”分别是什么意思??

PHP中$row['goods_name']和$goods.formated_goods_price中的“[]”“.”分别是什么意思??[]是表示数组引用,比如$row就是一个数组,里面包含了很多变量名-&gt;变量值的组合,$row['goods_name']就表示要用这个数组中变量名为goods_name的变量值.是字符串连接运算符。用来连接PHP变量和字符,如$price."元"

2024-11-18 02:01:07