Home > Backend Development > PHP Tutorial > Intercepting strings Code summary for intercepting Chinese strings in PHP

Intercepting strings Code summary for intercepting Chinese strings in PHP

WBOY
Release: 2016-07-29 08:46:07
Original
852 people have browsed it

String interception is a very common programming task, and string interception with Chinese characters is often used. Although it is not difficult, writing the function yourself is time-consuming. Here is a relatively easy-to-use string interception function that can meet the basic needs.
1. Intercept GB2312 Chinese string

Copy code The code is as follows:


< ?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;
}
?>


2. Intercept utf8 encoded multi-byte string

Copy code The code is as follows:


< ?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);
}
?>


3. Chinese character interception function supported by UTF-8 and GB2312

Copy code The code is as follows:


< ?php
/*
Utf-8 and gb2312 are both Supported Chinese character interception functions
cut_str(string, interception length, start length, encoding);
Encoding defaults to utf-8
Start length defaults to 0
*/
function cut_str($string, $sublen, $start = 0 , $code = 'UTF-8')
{
if($code == 'UTF-8')
{
$pa = "/[x01-x7f]|[xc2-xdf][x80-xbf]| xe0[xa0-xbf][x80-xbf]|[xe1-xef][x80-xbf][x80-xbf]|xf0[x90-xbf][x80-xbf][x80-xbf]|[xf1-xf7] [x80-xbf][x80-xbf][x80-xbf]/";
preg_match_all($pa, $string, $t_string);
if(count($t_string[0]) - $start > $sublen) return join('', array_slice($t_string[0], $start, $sublen))."...";
return join('', array_slice($t_string[0], $start, $sublen)) ;
}
else
{
$start = $start*2;
$sublen = $sublen*2;
$strlen = strlen($string);
$tmpstr = '';
for($i=0; $i< $strlen; $i++)
{
if($i>=$start && $i< ($start+$sublen))
{
if(ord(substr($string, $i, 1))> ;129)
{
$tmpstr.= substr($string, $i, 2);
}
else
{
$tmpstr.= substr($string, $i, 1);
}
}
if( ord(substr($string, $i, 1))>129) $i++;
}
if(strlen($tmpstr)< $strlen ) $tmpstr.= "...";
return $tmpstr;
}
}
$str = "abcd needs to intercept the string";
echo cut_str($str, 8, 0, 'gb2312');
?>


4. BugFree's character interception function

Copy the code The code is as follows:


< ?php
/**
* @package BugFree
* @version $Id: FunctionsMain.inc.php,v 1.32 2005/09/24 11:38:37 wwccss Exp $
*
*
* Return part of a string(Enhance the function substr())
*
* @author Chunsheng Wang
* @param string $String the string to cut.
* @param int $Length the length of returned string.
* @param booble $Append whether append "...": false|true
* @return string the cutted string.
*/
function sysSubStr($String,$Length,$Append = false)
{
if (strlen($String) < ; = $Length )
{
return $String;
}
else
{
$I = 0;
while ($I < $Length)
{
$StringTMP = substr($String,$I,1) ;
if ( ord($StringTMP) >=224 )
{
$StringTMP = substr($String,$I,3);
$I = $I + 3;
}
elseif( ord($StringTMP) >=192 )
{
$StringTMP = substr($String,$I,2);
$I = $I + 2;
}
else
{
$I = $I + 1;
}
$ StringLast[] = $StringTMP;
}
$StringLast = implode("",$StringLast);
if($Append)
{
$StringLast .= "...";
}
return $StringLast;
}
}
$String = "17test.info is at the forefront of automated testing in China";
$Length = "18";
$Append = false;
echo sysSubStr($String,$Length,$Append);
?> ;

The above has introduced a summary of the code for intercepting Chinese strings in PHP, including the content of intercepting strings. I hope it will be helpful to friends who are interested in PHP tutorials.

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