PHP 内置函数strlen 和mbstring扩展函数mb_strlen的区别

#EXAMPLE

$str_uncode = "简体中文Chinese(Simplified)";
//统计字符串长度
echo strlen($str_uncode).‘<br>‘;//结果:31
echo mb_strlen($str_uncode, ‘UTF-8‘).‘<br>‘;结果:23
echo mb_strlen($str_uncode, ‘GBK‘).‘<br>‘;结果:25
echo mb_strlen($str_uncode, ‘GB2312‘).‘<br>‘;结果27

  

结果分析:

strlen 把一个中文按3字节算(复杂的汉字会按4字节算)

mb_strlen  ‘UTF-8‘编码 一个汉字按一个字节位来算

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”这一行存在并且没有被注释掉,否则会出现未定义函 数的问题。

原文地址:https://www.cnblogs.com/zwesy/p/9314203.html

时间: 2024-11-13 08:44:45

PHP 内置函数strlen 和mbstring扩展函数mb_strlen的区别的相关文章

smarty中调用php内置函数

CleverCode发现smarty中调用php内置函数可以通过|实现.|前后没有空格.如果是数组求count需要加上@. 1个参数时候: {{'param1'|functionName}} 例如 {{$tmpStr|strlen}} 2个参数时候: {{'param1'|functionName:'param2'}} {$tmpStr|substr:'1'} 多个参数时候: {{'param1'|functionName:'param2':'param3'..}} {{$tmpStr|subs

PHP基本内置函数

基本知识 1.引用 php语言中有引用的概念,相当于指针.如$a = &$b <?php $a = 1; $b = &$a; $b = "2$b"; echo "$a,$b" ?> 2.运算符优先级 (new) > (++.–) > (*./.%) > (+.-) > (&&)> (||) > (?:) > (==) > (and) > (xor) > (or)

8. Smarty3:模版中的内置函数

smarty3中对内置函数的改动比较大,添加了许多新的功能:变量声明,表达式,流程控制,函数,数组等.但是建议不要在模版中去使用过于复杂的逻辑,而是要尽量将一些程序设计逻辑写到PHP中,并在模版中采用非常简单的语法即可调用.通常只在模版中进行一些如变量输出,流程判断及数组遍历等操作即可. 1. 变量声明 在模版中声明变量或用来在模版运行时为模版变量赋值,这是在Smarty3中新增的功能. 使用{assign},在模版运行时为模版变量或数组元素赋值 和在赋值时使用一些表达式 {$var=...}是

MySQL--(了解)可能会用到的内置函数

mysql内置函数列表可以从mysql官方文档查询,这里仅分类简单介绍一些可能会用到的函数.1 数学函数abs(x)pi()mod(x,y)sqrt(x)ceil(x)或者ceiling(x)rand(),rand(N):返回0-1间的浮点数,使用不同的seed N可以获得不同的随机数round(x, D):四舍五入保留D位小数,D默认为0, 可以为负数, 如round(19, -1)返回20truncate(x, D):截断至保留D位小数,D可以为负数, 如trancate(19,-1)返回1

PHP内置函数大全

1 php内置函数大全 2 第2章 Apache函数 15 3 2.1 Apache信息获取类函数 15 4 2.1.1 apache_child_terminate函数:在本次请求结束后终止Apache进程 15 5 2.1.2 apache_get_modules函数:获取Apache的模块列表 16 6 2.1.3 apache_get_version函数:获取Apache的版本 16 7 2.1.4 apache_getenv函数:获取Apache的环境变量 17 8 2.1.5 apa

【python第三篇】 python基础之函数,递归,内置函数

一 数学定义的函数与python中的函数 1.函数的好处:代码重用,保持一致性,易维护性,可扩展性 2.什么是过程?就是没有返回值的函数值,函数返回值:1.若没有返回值,返回None(没有return):2.有返回值时,直接返回值: 总结: 返回值数=0:返回None 返回值数=1:返回object 返回值数>1:返回tuple 3.1形参和实参 a.形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元,因此,形参只在函数内部有效,函数调用结束返回主调用函数不能再使用该形

内置函数

内置函数思维导图: 惊喜不断哟~~~~~~~

lambda表达式+python内置函数

传统的定义函数方式如下 def f1(): return 123 lambda表达式定义函数 f2 = lambda : 123 python3的内置函数 1.abs 绝对值 i = abs(-11) print (i) 输出结果是11 abs = absolute 2,all 循环参数,如果每个元素都为真,则返回为真 r = all([True, True]) print (r) 在python中 0 () [] ''和 None是False(空值都是假的) r = all(["123&quo

Oracle中REGEXP_SUBSTR及其它支持正则表达式的内置函数小结

Oracle中REGEXP_SUBSTR函数的使用说明: 题目如下:在oracle中,使用一条语句实现将'17,20,23'拆分成'17','20','23'的集合. REGEXP_SUBSTR函数格式如下:function REGEXP_SUBSTR(String, pattern, position, occurrence, modifier)__srcstr :需要进行正则处理的字符串__pattern :进行匹配的正则表达式,匹配的值将返回,返回策略由__occurrence决定__po