異なるエンコーディングでの PHP 文字列の長さの区別

WBOY
リリース: 2016-06-13 12:21:22
オリジナル
988 人が閲覧しました

UTF-8 の中国語文字列は 3 バイトです

コードをコピー コードは次のとおりです:


//エンコード UTF-8
echo strlen('テスト テキスト、テスト テキスト');
echo '-' >echo mb_strlen('テスト テキスト、テスト テキスト'; , 'utf-8');
?>
出力: 25-9


GB2312 の中国語文字列は 2 バイトです

コードをコピー コードは次のとおりです:

//Encoding GB2312
echo strlen('テストテキストテストテキスト');
echo '-';
echo mb_strlen('テストテキスト','Gb2312');


出力: 17- 9

Mysql データベース (5.1 以降のバージョン) では、フィールドの型が varchar(10) の場合、(バイトではなく) 10 文字を挿入できます。
そのため、文字列の長さを判断するときは、次のようにする必要があります。文書に従ってエンコードして区別します。
シンボルは、UTF-8 での単純な文字列インターセプト (文字数に基づくインターセプト)


コードをコピー コードは次のとおりです:

<

/*
* UTF-8 文字列インターセプト
* $str インターセプトする文字列
* $start インターセプト開始位置
* $length インターセプト長
*/
関数 CutStr($str,$start,$length) {
$restr = '';
$j = 0;
$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 = '';}
if ($j >= $end){break;}
}
$restr .='';
return $restr; 🎜>$str = 'チャイナニュースサービス、9月24日、20カ国・地域(G20)首脳による第3回金融サミットが今日米国ピッツバーグで開催される。 ';
echo $str;
echo '
'
echo '
'; ;


ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート