Let me introduce to you the functions used:
I will give you an example below:
//Test string
$str = 'aaaaahahaaaaahahahaaa';
echo strlen($str); // Only use strlen to output 25 bytes
// The encoding must be specified, otherwise PHP's internal code mb_internal_encoding() will be used to view the internal code
// Use mb_strwidth to output a string with a width of 20 and use utf8 encoding
echo mb_strwidth($str, ' utf8');
// Only intercept if the width is greater than 10
if(mb_strwidth($str, 'utf8')>10){
// Set here to intercept from 0, take 10 appends.. ., use utf8 encoding
// Note that the appended... will also be calculated into the length
$str = mb_strimwidth($str, 0, 10, '...', 'utf8');
}
// Finally output aaaa... 4 a's are counted as 4 1's, 2 are counted as 3 points, and 3 are counted as 4+2+3=9
// Isn't it very simple, yes Did people say why there are 9 and not 10?
// Because "Ah" happens to be followed by "Ah", Chinese counts 2, 9+2=11 exceeds the setting, so removing 1 is 9
echo $str;
Let me introduce some other functions to you:
In fact, these two functions are very similar to strlen() and substr(). The only difference is that the encoding can be set.
Example below:
//The output length is 7, why is it 7?
// Note that after setting the encoding here, whether it is Chinese or English, each length is 1
// a a 1 2 ah a a
// 1+1+1+1+1+1+ 1 = 7
// Is it exactly 7 characters?
echo mb_strlen($str, 'utf8');
// The same is true for mb_substr
// I only want 5 characters now
echo mb_substr($str, 0, 5, 'utf8'); // Output aa12
In fact, there are many useful functions in the mb extension, so I won’t list them all here.
Interested friends can view the official manual
Okay, that’s all for today.