ホームページ > バックエンド開発 > PHPの問題 > PHPで文字列が占めるバイト数を計算する方法

PHPで文字列が占めるバイト数を計算する方法

青灯夜游
リリース: 2023-03-16 19:18:01
オリジナル
8755 人が閲覧しました

PHP では、strlen() 関数を使用して文字列内のバイト数を計算できます。この関数は、文字列の長さをバイト単位で計算し、その文字列が占める文字長 (バイト数) をカウントできます。構文は「strlen (string)」です。この関数の計算では、英語のカンマ、数字、英字、小数点などは 1 バイトのみを占有しますが、GB2312 でエンコードされた漢字は 2 バイト、UTF-8 でエンコードされた漢字は 3 バイトを占有します。

PHPで文字列が占めるバイト数を計算する方法

このチュートリアルの動作環境: Windows 7 システム、PHP バージョン 8.1、DELL G3 コンピューター

php のさまざまなエンコード形式によって占有される文字バイトは異なります:

  • ANSI エンコード形式では、1 つの中国語文字が 2 バイトを占め、1 つの英語文字が 1 バイトを占めます。

  • UTF -8 エンコーディング形式: 1 つの中国語文字が 3 バイトを占有し、1 つの英語文字が 1 バイトを占有します。

#PHP では、strlen() 関数を使用して文字列内のバイト数を計算できます。

strlen() 関数は、文字列の長さをバイト単位で計算します。

strlen($string)
ログイン後にコピー

この関数は 1 つのパラメーター $string (計算される文字列) のみを受け入れ、このパラメーターに渡された値が空の場合は 0 を返します。

strlen() 関数では、(英語モードでは) カンマ、数字、英字、小数点 .、アンダースコア、スペースなどは 1 つだけを占めます。文字の長さ (バイト)。

<?php
header("Content-type:text/html;charset=utf-8");
$str = "hello world!";
echo &#39;字符串 “&#39;.$str.&#39;” 占:&#39;.strlen($str).&#39; 个字节<br>&#39;;
?>
ログイン後にコピー

PHPで文字列が占めるバイト数を計算する方法

分析: 上記の例の文字列には、10 個の英字、スペース、および英語の感嘆符があり、合計は 12 バイトです。

strlen() 関数では、GB2312 でエンコードされた中国語文字は長さ 2 文字 (バイト) を占め、UTF-8 でエンコードされた中国語文字は長さ 3 文字 (バイト) を占めます。 )。

<?php
header("Content-type:text/html;charset=utf-8");
$str = "!";
echo &#39;字符串 “&#39;.$str.&#39;” 占:&#39;.strlen($str).&#39; 个字节<br>&#39;;
?>
ログイン後にコピー

PHPで文字列が占めるバイト数を計算する方法

上記の例では、「!」は中国語の感嘆符であるため、3 バイトを占めます。

<?php
header("Content-type:text/html;charset=utf-8");
$str = "欢迎";
echo &#39;字符串 “&#39;.$str.&#39;” 占:&#39;.strlen($str).&#39; 个字节<br>&#39;;
?>
ログイン後にコピー

PHPで文字列が占めるバイト数を計算する方法

#上記の例では、漢字が 2 文字含まれているため、6 バイトを占有します。

<?php
header("Content-type:text/html;charset=utf-8");
$str = "hello,欢迎来到这里!";
echo &#39;字符串 “&#39;.$str.&#39;” 占:&#39;.strlen($str).&#39; 个字节<br>&#39;;
?>
ログイン後にコピー

PHPで文字列が占めるバイト数を計算する方法

上記の例では、英語 5 文字、中国語 6 文字、中国語の感嘆符、カンマが 1 つ含まれているため、5 (8*3) = を占めます。 29キャラ祭り。

注: 文字列内の文字数を計算する場合、strlen() 関数は英語の文字列のみを処理でき、中国語または中国語と英語の混合文字列には適していません。このとき、

文字

に基づいて文字列の長さを計算できる mb_strlen() 関数を使用する必要があります。

拡張知識: mb_strlen() 関数

mb_strlen() 関数は文字列の長さを返すこともできます。構文形式は次のとおりです:

mb_strlen($str [, $encoding = mb_internal_encoding()])
ログイン後にコピー
  • $str は、長さを計算する必要がある文字列です

  • $encoding は、文字エンコーディングであるオプションのパラメータです。省略した場合、内部文字エンコーディングが使用されます。

mb_strlen() 関数の戻り値は、$encoding エンコーディングを使用した文字列 $str に含まれる文字数です。$encoding が無効な場合は、false が返されます。

注: strlen() 関数とは異なり、mb_strlen() 関数では、漢字、英語、数字、小数点、アンダースコア、スペースのいずれであっても、長さは 1 文字のみを占めます。

[例] mb_strlen()関数を使用して文字列長を取得します。

<?php
header("Content-type:text/html;charset=utf-8");
$str = "hello 你好!";
echo &#39;字符串 “&#39;.$str.&#39;” 的长度为:&#39;.mb_strlen($str,"utf-8").&#39;<br>&#39;;

$str = "欢迎来到PHP中文网!";
echo &#39;<br>字符串 “&#39;.$str.&#39;” 的长度为:&#39;.mb_strlen($str,&#39;utf-8&#39;).&#39;<br>&#39;;
?>
ログイン後にコピー

PHPで文字列が占めるバイト数を計算する方法

対応する $encoding パラメータを設定することで、中国語の文字列の長さの問題をうまく処理できることがわかります。

推奨学習: 「PHP ビデオ チュートリアル

以上がPHPで文字列が占めるバイト数を計算する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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