Home>Article>Backend Development> Comparison of strlen() and mb_strlen() in PHP

Comparison of strlen() and mb_strlen() in PHP

不言
不言 Original
2018-04-20 12:13:20 1578browse

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_strlenGet the length of the string


##mixedmb_strlen(string$str[,string$encoding= mb_internal_encoding()] )

Get the length of a

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn