Home > Article > Backend Development > PHP intercepts string length (Chinese and English mixed string)_PHP tutorial
The article introduces the string interception function from the interception function that comes with PHP to finally supporting Chinese, English and mixed Chinese and English string interception methods. Friends in need can refer to it.
Get part of the string.
Syntax: string substr(string string, int start, int [length]);
Return value: String
Function type: Data processing
Content Description
This function extracts length characters from the start position of the string string. If start is a negative number, it starts from the end of the string. If the omitted parameter length exists but is a negative number, it means that the length character from the bottom is obtained.
Usage Example
The code is as follows | Copy code | ||||||||
echo substr("abcdef", 1, 3); // Return "bcd" echo substr("abcdef", -2); // Return "ef"
echo substr("abcdef", -3, 1); // return "d"
|
The above only supports English and not Chinese
代码如下 | 复制代码 |
< ?php |
The code is as follows | Copy code |
< ?php <🎜> //Intercept Chinese string <🎜> function mysubstr($str, $start, $len) { <🎜> $tmpstr = ""; <🎜> $strlen = $start + $len; <🎜> for($i = 0; $i < $strlen; $i++) { <🎜> If(ord(substr($str, $i, 1)) > 0xa0) { $tmpstr .= substr($str, $i, 2); $i++; } else $tmpstr .= substr($str, $i, 1); } Return $tmpstr; } ?> |
The code is as follows | Copy code |
< ?php <🎜> //Intercept utf8 string <🎜> function utf8Substr($str, $from, $len) <🎜> { <🎜> Return preg_replace('#^(?:[x00-x7F]|[xC0-xFF][x80-xBF]+){0,'.$from.'}'. <🎜> ‘((?:[x00-x7F]|[xC0-xFF][x80-xBF]+){0,'.$len.'}).*#s', <🎜> ‘$1’,$str); <🎜> } <🎜> ?> |
/*
* Function: The function is the same as substr, except that it will not cause garbled characters
* Parameter:
* Return:
*/
The code is as follows | Copy code |
function utf8_substr( $str , $start , $length=null ){ // If the parameter start is a positive number // If the first byte is not the first byte of the complete character, then intercept about 6 bytes
If ( preg_match( '@^([x80-xBF]{0,5})[xC0-xFD]?@' , $next_segm , $bytes ) ){ // Determine whether the last 6 bytes comply with utf8 rules return $res; |
Test data::
The code is as follows
|
Copy code | ||||
';
var_dump( utf8_substr( $str , 22 , -6 ) ); echo ' '; var_dump( utf8_substr( $str , 9 , 12 ) ); echo ' '; var_dump( utf8_substr( $str , 19 , 12 ) ); echo ' '; var_dump( utf8_substr( $str , 28 , -6 ) ); echo ' '; 显示结果::(截取无乱码, 欢迎大家测试, 提交bug) 把我常用的分享出来 下面我们再来看中文截函数吧。
|