Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

PHP辞典

  1. トップページ
  2. PHP辞典
  3. strlen() / mb_strlen()

strlen() / mb_strlen()対応: PHP 4(2000)

文字列の長さを取得します。マルチバイト文字を含む場合は『mb_strlen()』を使用することで、文字数を正しく取得できます。

構文
// バイト数を返します。
strlen($string);

// 文字数を返します。マルチバイト文字に対応しています。
mb_strlen($string, $encoding);
関数一覧
関数概要
strlen($string)文字列のバイト数を返します。半角英数字は1バイト、UTF-8の日本語は1文字あたり3バイトとして計算されます。
mb_strlen($string, $encoding)文字列の文字数を返します。第2引数のエンコーディングは省略可能で、省略時は内部エンコーディングが使用されます。
戻り値

『strlen()』は文字列のバイト数を整数で返します。『mb_strlen()』は文字数を整数で返します。

サンプルコード
<?php
// 半角英数字の長さを取得します。
$str = "Hello";
echo strlen($str); // 『5』と出力されます。

// 日本語を含む文字列のバイト数を取得します。
$name = "山田太郎";
echo strlen($name); // UTF-8では1文字3バイトのため『12』と出力されます。

// mb_strlen() で正しい文字数を取得します。
echo mb_strlen($name, "UTF-8"); // 『4』と出力されます。

// 入力値のバリデーションに活用できます。
$username = "田中一郎";
if (mb_strlen($username, "UTF-8") > 20) {
	echo "ユーザー名は20文字以内で入力してください。";
} else {
	echo "ユーザー名を受け付けました。"; // こちらが出力されます。
}

// 空文字列の長さは 0 です。
echo strlen(""); // 『0』と出力されます。
概要

『strlen()』は文字列の長さをバイト数で返す関数です。半角英数字は1文字1バイトですが、UTF-8の日本語は1文字あたり3バイトになるため、日本語を含む文字列では『strlen()』で正しい文字数を取得できません。日本語を含む場合は必ず『mb_strlen()』を使用してください。

『mb_strlen()』はマルチバイト対応の文字列長取得関数で、エンコーディングに応じた正しい文字数を返します。第2引数にエンコーディングを指定できますが、省略した場合は mb_internal_encoding() で設定されている内部エンコーディングが使われます。

フォーム入力値の文字数チェックや、文字列の切り出し処理の前に長さを確認する場合など、さまざまな場面で活用されます。文字列の検索には『strpos()』、文字列の切り出しには『substr() / mb_substr()』を使用してください。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。