Home  >  Article  >  Backend Development  >  What should I do if the php substr function intercepts Chinese garbled characters?

What should I do if the php substr function intercepts Chinese garbled characters?

藏色散人
藏色散人Original
2021-09-20 10:47:363386browse

php The substr function intercepts Chinese characters and produces garbled characters because the substr function treats a UTF-8 Chinese character as 3 bytes. The way to solve the garbled characters is to use the mb_strlen and mb_substr functions instead.

What should I do if the php substr function intercepts Chinese garbled characters?

The operating environment of this article: Windows7 system, PHP7.1, Dell G3 computer.

What should I do if the php substr function intercepts Chinese garbled characters?

Solution for intercepting Chinese garbled characters with substr in PHP

Substr is often used to intercept strings in PHP, but when we use it to implement When Chinese characters are intercepted, garbled characters will occur. For example:

<?php
$mystring="今天天气真好";
$mysubstring=substr($mystring,0,2);
echo $mysubstring;
?>

The output result is �;

Cause analysis: The substr function prototype is: string substr (string $string, int $ start [, int $length ] ), where $length represents the returned byte length, and a Chinese character occupies two bytes. For a UTF-8 Chinese character, it will be treated as 3 bytes.

<?php
$length=strlen($mystring);echo $length;//输出结果为18
?>

That is to say, we can use $length to be 3, which will successfully return the word "Jin". In this case, if Chinese and English are mixed, we need to calculate $length carefully.

So is there a better solution? Php provides additional functions mb_strlen and mb_substr

<?php
$length=mb_strlen($mystring);
$mysub=mb_substr($mystring,0,4);
echo "the length is:$length,","the substr is:$mysub";
?>

The output result is: the length is: 6, the substr is: today’s weather
The prototype of the mb_strlen function is int mb_strlen(string string_input, string encode); encode defaults to UTF-8, which will count Chinese characters encoded in UTF-8 as a

Note: mb_strlen and mb_substr are not the core functions of PHP. You need to open php.ini before use. extension=php_mbstring.dll

Recommended study: "PHP Video Tutorial"

The above is the detailed content of What should I do if the php substr function intercepts Chinese garbled characters?. 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