Home > Backend Development > PHP Tutorial > PHP easily implements Chinese and English mixed string interception_PHP tutorial

PHP easily implements Chinese and English mixed string interception_PHP tutorial

WBOY
Release: 2016-07-13 10:29:19
Original
923 people have browsed it

Let me introduce to you the functions used:

Copy code The code is as follows:

mb_strwidth($str, $encoding) returns the width of the string
$str The string to be calculated
$encoding The encoding to be used, such as utf8, gbk

Copy code The code is as follows:

mb_strimwidth($str, $start, $width, $tail, $encoding) Press Width to intercept the string
$str The string to be intercepted
$start From which position to intercept, the default is 0
$width The width to be intercepted
$tail The characters appended to the end of the intercepted string String, commonly used is...
$encoding The encoding to be used

I will give you an example below:

Copy code The code is as follows:

/**
* utf8 encoding format
* 1 Chinese character occupies 3 bytes
* What we hope is that 1 Chinese character occupies 2 bytes,
* Because from the width point of view, 2 English letters occupy The position is equivalent to 1 Chinese
*/

//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:

Copy code The code is as follows:

mb_strlen($str, $encoding) returns the length of the string
$str The string to be calculated
$encoding The encoding to use

Copy code The code is as follows:

mb_substr($str, $start, $length, $encoding) intercept string
$str The string to be intercepted
$start Where to start intercepting
$length How long to intercept
$encoding The encoding used

In fact, these two functions are very similar to strlen() and substr(). The only difference is that the encoding can be set.

Example below:

Copy code The code is as follows:

/**
* utf8 encoding format
* 1 Chinese character occupies 3 bytes
*/
$str = 'aa12ahaa';
echo strlen($str); // The direct output length is 9

//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.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/777641.htmlTechArticleLet me first introduce the functions used: Copy the code as follows: mb_strwidth($str, $encoding) Return characters The width of the string $str The string to be calculated $encoding The encoding to be used, such as...
Related labels:
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template