PHP インターセプト中国語文字列関数 ~ GB2312 と UT-8 を含む
/*
Utf-8 と gb2312 の両方でサポートされる漢字インターセプト関数
cut_str(string, インターセプト長, 開始長, エンコーディング);
エンコーディングのデフォルトは utf-8 です。
デフォルトの開始長は 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;
$strlen = strlen($string); '';
for($i=0; $i< $strlen; $i++)
{
if($i>=$start && $i< ($start+$sublen ) )
= substr($ string、$ i、2); abcd がインターセプトする必要がある文字列";
echo Cut_str($str, 8, 0, 'gb2312');
?>
//中国語の文字列をインターセプト
// GB2312 をサポート
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, 1);
} }
} return $tmpstr; }
?> 文字列
関数 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) ;
}
?>