UTF-8 中国語文字列は 3 バイトです
//Encoding UTF-8
echo strlen('テスト テキスト a テスト テキスト');
echo '-'
echo mb_strlen(' テスト テキスト aテスト テキスト','utf-8');
?>
出力: 25-9
GB2312 の中国語文字列は 2 バイトです
//Encoding GB2312
echo strlen ('テストテキスト');
echo '-';
echo mb_strlen('テストテキスト','Gb2312');
出力: 17-9
フィールドタイプは varchar(10) で、10 文字 (バイトではありません) を挿入できます。
そのため、文字列の長さを判断するときは、ドキュメントのエンコーディングに従って区別する必要があります。
は単純な UTF-8 文字列インターセプト (文字数に基づくインターセプト) を表します
/*
* UTF-8 文字列インターセプション
* $str インターセプトされる文字列
* $start インターセプト 開始位置
* $length カット長
*/
function CutStr($str,$start,$length) {
$restr = '';
$end = $length + $start - 1 ; plen = strlen($str);
for($i=0;$i<$plen;$i++) {
$restr .= ord($str[$i])>127 ? .$str[++$i].$str[++$i] : $str[$i]
if ($j < $start){$restr = ''; ($j >= $end){break;}
}
$restr .='';
return $restr;
}
$str = '中国新聞社、9 月 24 日 グループの第 3 回金融サミット (今日、G20)首脳会議が米国のピッツバーグで開催されます。 ';
echo $str;
echo utf8_substr($str,0,25);
http://www.bkjia.com/PHPjc/364339.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/364339.html