Home>Article>Backend Development> Comparison of strlen() and mb_strlen() in PHP
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
##intstrlen(string$ string)
Returns the length of the given stringstring.
mb_strlen—Get the length of the string
##mixedmb_strlen(string$str[,
string$encoding= mb_internal_encoding()
] )
string.
str:Thestringto check the length of.
encoding: Theencodingparameter 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:
"; $_str_y = "hello"; $_str_c = "你好"; //strlen() echo "strlen()输出hello的长度".strlen($_str_y)."
"; echo "strlen()输出'你好'的长度".strlen($_str_c)."
"; /** * 输出: * strlen()输出hello的长度5 * strlen()输出'你好'的长度6 */ //mb_strlen() echo "mb_strlen( 不指定字符编码 )输出hello的长度".mb_strlen($_str_y)."
"; echo "mb_strlen( 不指定字符编码 )输出'你好'的长度".mb_strlen($_str_c)."
"; /** * mb_strlen( 不指定字符编码 )输出hello的长度5 * mb_strlen( 不指定字符编码 )输出'你好'的长度6 */ //mb_strlen() echo "mb_strlen( utf-8 )输出hello的长度".mb_strlen($_str_y,'utf-8')."
"; echo "mb_strlen( utf-8 )输出'你好'的长度".mb_strlen($_str_c,'utf-8')."
"; /** * 输出: * 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!