return preg_replace('#^(?:[x00-x7F]|[ xC0 -xFF][x80-xBF]+){0,'.$from.'}'.'((?:[x00-x7F]|[xC0-xFF][x80-xBF]+){0, ' .$len.'}).*#s', '$1',$str);
3. GB2312 中国語文字列をコピーします
コードは次のとおりです:
//中国語の文字列をインターセプト
function mysubstr($str, $start, $len) {
$tmpstr = ""; for($ i = 0; $i < $strlen; $i++) {
if(ord(substr($str, $i, 1)) > 0xa0) {
$tmpstr .= substr($str, $ i, 2 );
4. コードをコピーします
$StringTMP = substr($ String,$I,1 );
if ( ord($StringTMP) >=224 )
$StringTMP = substr($String,$I,3); elseif( ord($StringTMP ) >=192 )
{
$StringTMP = substr($String,$I,2);
$I = $I + 2
}
else
{
$I = $I; + 1;
}
$StringLast[] = $StringTMP;
$StringLast = implode("",$StringLast)
{
$StringLast .= "…"; $StringLast;
}
}
$String = "http://www.jb51.net — シンプル、素晴らしい、ユニバーサル";
$Append = false; $Length,$Append) ;
?>
dedecms のインターセプト コード
これは dedecms から直接取得したコードであり、少し変更することができます。
コードをコピーします
コードは次のとおりです:
//中国語インターセプト 2、シングルバイトインターセプトモード
//リクエストの内容である場合、この関数を使用する必要があります
function cn_substrR($str,$slen,$startdd=0)
{
$str = cn_substr(stripslashes ($str),$slen,$startdd);
returnaddslashes($str)
}
//中国語インターセプト 2、シングルバイトインターセプトモード
function cn_substr($str,$slen,$startdd) =0)
{
グローバル $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;
}
}
return $restr;
//utf-8インターセプトモード
function cn_substr_utf8($str, $length, $start=0)
{
if(strlen($str) < $start+1)
{
return ''
}
preg_match_all("/./ su", $ str, $ar);
$str = '';
$tstr = '';
//mysql4.1 より前のバージョンと互換性を持ち、データベースの varchar と一貫性を保つために、バイトごとにここではインターセプトが使用されます
for($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;
phpcms の文字列インターセプト コード:
コード
コードは次のとおりです。
function str_cut($ string, $length, $dot = '...')
{
$strlen = strlen($string); if($strlen <= $length); $string を返す;
$string = str_replace(array(' ', '&', '"', ''', '"', '"', '—', '<', '>', ' ·', '…')、array(' '、'&'、'"'、"'"、'"'、'"'、'—'、'<'、'>'、'・' , '…'), $string); $strcut = ''; if(strto lower(CHARSET) == 'utf-8') { $n = $tn = $noc = 0; n < $strlen)
{
$t = ord ($string[$n]);
if($t == 9 || $t == 10 || (32 <= $t && $t < ;= 126)) {
$tn = 1; $n++;
} elseif(194 <= $t && $t <= 223) { $n += 2; noc += 2;
} elseif(224 <= $t && $t <239) {
$tn = 3; $noc += 2; t && $t <= 247) {
$tn = 4; $n += 4; $noc += 2;
} elseif(248 <= $t && $t <= 251) { = 5; $noc += 2;
} elseif($t == 252 || $t == 253) {$n += 6; ;
} else {
$n++;
} if ($noc > $length) $n -= $tn;文字列, 0, $n);
}
else
{
$dotlen = strlen($dot);
$maxi = $length - $dotlen - 1; $i {
$strcut .= ord( $string[$i]) > $string[$i].$string[++$i] : $string[$i];
$strcut = str_replace(array('&', '"', "'", '<', '>'), array('&', '"', ''', '<' , '>'), $strcut);
$strcut.$dot;
http://www.bkjia.com/PHPjc/322290.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/322290.html
技術記事
1. UTF-8 および GB2312 でサポートされている漢字インターセプト関数のコピー コードは次のとおりです: ?php /* 漢字インターセプト関数 Cut_str (文字列、インターセプト長、開始長、エンコーディング...
)