関数辞典
🔧 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 の代替)。