Home  >  Article  >  Backend Development  >  PHP interception string special collection_PHP tutorial

PHP interception string special collection_PHP tutorial

WBOY
WBOYOriginal
2016-07-21 15:35:01777browse

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

Copy code The code is as follows:

/*
Chinese character interception function supported by both Utf-8 and gb2312
cut_str(string, interception length, starting length, encoding);
The encoding defaults to utf-8
The default start length is 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 string that needs to be intercepted";
echo cut_str($str, 8, 0, 'gb2312');
?>

2. Intercept utf8 Encoded multi-byte string
Copy code The code is as follows:

/ /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. Intercept GB2312 Chinese string
Copy code The code is as follows:

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

4. BugFree’s character interception function
Copy code The code is as follows:

/**
* @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())
*
* @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 = "http://www.jb51.net — Simple, wonderful, universal";
$Length = "18";
$Append = false;
echo sysSubStr($String,$Length,$Append);
?>

Interception code in dedecms
This is taken directly from dedecms You can modify the code slightly.
Copy code The code is as follows:

//Chinese interception 2, single-byte interception mode
//If it is the content of the request, this function must be used
function cn_substrR($str,$slen,$startdd=0)
{
$str = cn_substr(stripslashes($str),$slen,$startdd);
return addslashes($str);
}
//Chinese interception 2, single byte Interception mode
function cn_substr($str,$slen,$startdd=0)
{
global $cfg_soft_lang;
if($cfg_soft_lang=='utf-8')
{
return cn_substr_utf8($str,$slen,$startdd);
}
$restr = '';
$c = '';
$str_len = strlen($str);
if($str_len < $startdd+1)
{
return '';
}
if($str_len < $startdd + $slen || $slen==0)
{
$slen = $str_len - $startdd;
}
$enddd = $startdd + $slen - 1;
for($i=0;$i<$str_len; $i++)
{
if($startdd==0)
{
$restr .= $c;
}
else if($i > $startdd)
{
$restr .= $c;
}
if(ord($str[$i])>0x80)
{
if($str_len>$i+ 1)
{
$c = $str[$i].$str[$i+1];
}
$i++;
}
else
{
$c = $str[$i];
}
if($i >= $enddd)
{
if(strlen($restr)+strlen($c) >$slen)
{
break;
}
else
{
$restr .= $c;
break;
}
}
}
return $restr;
}
//utf-8 Chinese interception, single-byte interception mode
function cn_substr_utf8($str, $length, $start=0)
{
if(strlen($str) < $start+1)
{
return '';
}
preg_match_all("/./su", $str, $ar ; i=0; isset($ar[0][$i]); $i++)
{
if(strlen($tstr) < $start)
{
$tstr .= $ar[0][$i];
}
else
{
if(strlen($str) < $length + strlen($ar[0][$i]) )
{
$str .= $ar[0][$i];
}
else
{
break;
}
}
}
return $str;
}



String interception code in phpcms:


Copy code
The code is as follows: function str_cut($string, $length, $dot = '...') {
$strlen = strlen($string);
if($strlen <= $length) return $string;
$string = str_replace(array(' ', '&', '"', ''', '"', '"', '—', '<', '>', '·', '...'), array(' ', '&', '"', "'", '"', '"', '— ', '<', '>', '·', '…'), $string);
$strcut = '';
if(strtolower(CHARSET) == 'utf-8' )
{
$n = $tn = $noc = 0;
while($n < $strlen)
{
$t = ord($string[$n]) ;
if($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) {
$tn = 1; $n++; $noc++ ;
} elseif(194 <= $t && $t <= 223) {
$tn = 2; $n += 2; $noc += 2;
} elseif(224 < ;= $t && $t < 239) {
$tn = 3; $n += 3; $noc += 2;
} elseif(240 <= $t && $t <= 247) {
$tn = 4; $n += 4; $noc += 2;
} elseif(248 <= $t && $t <= 251) {
$tn = 5; $n += 5; $noc += 2;
} elseif($t == 252 || $t == 253) {
$tn = 6; $n += 6; $noc += 2;
} else {
$n++;
}
if($noc >= $length) break;
}
if($noc > $length ) $n -= $tn;
$strcut = substr($string, 0, $n);
}
else
{
$dotlen = strlen($dot);
$maxi = $length - $dotlen - 1;
for($i = 0; $i < $maxi; $i++)
{
$strcut .= ord($string[$ i]) > 127 ? $string[$i].$string[++$i] : $string[$i];
}
}
$strcut = str_replace(array('& ', '"', "'", '<', '>'), array('&', '"', ''', '<', '>'), $strcut);
return $strcut.$dot;
}




http://www.bkjia.com/PHPjc/322290.html

www.bkjia.com

http: //www.bkjia.com/PHPjc/322290.htmlTechArticle1. The Chinese character interception function that is supported by UTF-8 and GB2312 is copied as follows: ?php /* Utf- 8. The Chinese character interception function cut_str (string, interception length, starting length, encoding... is supported by gb2312
Statement:
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