Substr is often used in PHP to intercept strings, but when we use it to intercept Chinese characters, garbled characters will occur , for example: (Recommended learning: PHP programming from entry to proficiency)
<?php $mystring="今天天气真好"; $mysubstring=substr($mystring,0,2); echo $mysubstring; ?>
The output result is �;
Cause analysis:substr function The prototype is: string substr ( string $string , int $start [, int $length ] ), where $length represents the returned byte length, and one Chinese character occupies two bytes. For a UTF-8 Chinese character, it will be It is 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 #mb_strlen function prototype is int mb_strlen(string string_input, string encode); encode defaults to UTF-8, which will count Chinese characters encoded for UTF-8 as oneNote: mb_strlen and mb_substr are not core functions of PHP. You need to open extension=php_mbstring.dll in php.ini before using them
The above is the detailed content of PHP implements Chinese string interception without garbled characters. For more information, please follow other related articles on the PHP Chinese website!