ホームページ >バックエンド開発 >PHPチュートリアル >PHP_PHP チュートリアルのさまざまなエンコーディングで文字列の長さを区別する

PHP_PHP チュートリアルのさまざまなエンコーディングで文字列の長さを区別する

WBOY
WBOYオリジナル
2016-07-21 14:55:48807ブラウズ

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

tru​​e

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

UTF-8 の中国語文字列は 3 バイトです?php //UTF-8 のエンコーディング echo strlen('テスト テキスト a テスト テキスト') echo mb_strlen('テスト テキスト a テスト テキスト','utf -8 '); 出力: 25-9 GB...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。