関数辞典

🔧 strlen()

strlen() — 文字列のバイト数を取得

シグネチャ

strlen(string $string): int
引数 1
string $string
戻り値
int

解説

文字列のバイト数を返します。 注意点として、 日本語(マルチバイト)では UTF-8 1 文字あたり 3 バイトとなるため、 見た目の文字数とは一致しません。 日本語の文字数を数えるなら `mb_strlen()` を使います。 ASCII 文字列の長さチェックや、 「ファイルサイズの予測」 「データベース VARCHAR の長さ判定」 等で使われます。

使用例

<?php
echo strlen('hello');     // 5
echo strlen('こんにちは'); // 15(3バイト×5文字)
echo mb_strlen('こんにちは'); // 5

よくある用途

1. パスワードの最小バイト長チェック (= bcrypt は 72 バイト上限という事情から、 入力前に strlen で確認)。 2. JSON エンコード前のサイズ予測。 3. プログレスバーや「N 文字制限」 表示でのリアルタイム counts (= ASCII で OK な場面)。 4. バイナリ操作 (= 画像生成 / バイナリプロトコル) のサイズ算出。

落とし穴 / 注意点

❌ 日本語ユーザー名の文字数チェックに strlen を使うと「あいうえお」 で 15 文字判定になります。 必ず mb_strlen() を使ってください。 ❌ UTF-8 BOM 付きのファイルから file_get_contents で読んだ文字列に strlen をかけると BOM 3 バイト分多くなります。 ❌ multibyte string でも長さの「最大バイト」 を求めたい場合は strlen で正しいが、 文字数として扱うと半角・全角が混在した時に意味がずれます。

代替手段・関連関数

・mb_strlen($str, 'UTF-8') — マルチバイト文字数 (= 「あ」 が 1)。 ・grapheme_strlen($str) — 結合文字含む書記素クラスタ単位 (= 絵文字や合字を 1 文字扱い・intl 拡張必要)。 ・iconv_strlen() — エンコーディングを明示して文字数を取る (= mb_strlen の代替)。

公式マニュアル

https://www.php.net/manual/ja/function.strlen.php