The content of this article is about the comparison between strlen() and mb_strlen() in PHP. It has a certain reference value. Now I share it with you. Friends in need can refer to it.
This article is Original by the blogger, please indicate the source if reprinted.
First take a look at what the official documentation says;
strlen()-used to get the string length
##int strlen ( string $ string )
Returns the length of the given string string.
mb_strlen — Get the length of the string
##mixed mb_strlen ( string $str[,
string $encoding = mb_internal_encoding()
] )
string.
str: The string to check the length of.
encoding: The encoding parameter is the character encoding. If omitted, the internal character encoding is used.
Note: The strlen() function cannot correctly handle Chinese strings. It only gets the number of bytes occupied by the string.
In strlen(), the encoding is GB2312, and one Chinese character occupies 2 bytes. If encoded as utf-8, one Chinese character occupies 3 bytes.
However,
In mb_strlen(), if the encoding is utf-8, the length of a Chinese character output is 1. Code to help understand:
<?php header("Content-type:text/html;charset=utf-8"); echo "关于字符串你长度获取的测试"."<br />"; $_str_y = "hello"; $_str_c = "你好"; //strlen() echo "strlen()输出hello的长度".strlen($_str_y)."<br />"; echo "strlen()输出'你好'的长度".strlen($_str_c)."<br />"; /** * 输出: * strlen()输出hello的长度5 * strlen()输出'你好'的长度6 */ //mb_strlen() echo "mb_strlen( 不指定字符编码 )输出hello的长度".mb_strlen($_str_y)."<br />"; echo "mb_strlen( 不指定字符编码 )输出'你好'的长度".mb_strlen($_str_c)."<br />"; /** * mb_strlen( 不指定字符编码 )输出hello的长度5 * mb_strlen( 不指定字符编码 )输出'你好'的长度6 */ //mb_strlen() echo "mb_strlen( utf-8 )输出hello的长度".mb_strlen($_str_y,'utf-8')."<br />"; echo "mb_strlen( utf-8 )输出'你好'的长度".mb_strlen($_str_c,'utf-8')."<br />"; /** * 输出: * mb_strlen( utf-8 )输出hello的长度5 * mb_strlen( utf-8 )输出'你好'的长度2 */ ?>
Note: mb_strlen is not a core function of PHP. Before using it, you need to make sure that php_mbstring.dll is loaded in php.ini, that is, make sure that the line "extension=php_mbstring.dll" exists. And it is not commented out, otherwise the problem of undefined function will occur.
Related recommendations:
The difference between abstract classes and interfaces in php
The above is the detailed content of Comparison of strlen() and mb_strlen() in PHP. For more information, please follow other related articles on the PHP Chinese website!