strlenとは?
PHPのstrlen関数は、文字列の長さ(文字数)を取得するための組み込み関数です。
例えば、「ユーザーが入力したパスワードが何文字なのか知りたい」という場面を考えてみましょう。
このとき、「dog123」というパスワードなら6文字、「mypassword」なら10文字です。このような文字列に含まれる文字の数を数えるのがstrlenの役割です。
strlenの特徴を確認します。
strlenの特徴
- 文字列の長さ(文字数)を取得する組み込み関数
- 引数として文字列を受け取り、その文字列に含まれる文字の数を整数で返す
- 空文字列の場合は0を返す
- 文字列が存在しない場合はエラーとなる
パスワードの文字数チェック、データベースの文字数制限確認、表示制御など、さまざまな場面で有用です。
プログラムで文字列を扱う際の基本的かつ重要な処理といえるでしょう。
基本構文
PHPのstrlen関数の使い方は、とてもシンプルです。「strlen(文字列)」という形で書きます。
例えば、動物の名前が入った変数なら、strlen($animal)と書きます。
strlenを実行すると、引数として渡した文字列の文字数が整数で返されるということも覚えておきましょう。
まずは、実際のコード例を見てみます。
出力結果
6
このプログラムでは、$animalという変数に「ネコ」という文字列を代入しています。
strlen($animal)で文字列の長さを取得し、その結果をechoで表示しています。
しかし、この例では「ネコ」が6と表示されていますね。これは日本語がマルチバイト文字として計算されるためです。
strlen()関数は、厳密にはバイト数を返すということです。
もし、日本語で文字数を数えたいときにはmb_strlen()を使いましょう。
出力結果
文字数: 16
英語の文字列「Golden Retriever」の場合、16文字としてカウントされます。スペースもカウントに含まれる点がポイントです。
$length = strlen($petName);で文字数を変数に保存し、その後で結果を表示しています。
このように、アルファベットなど1バイト文字の場合は、見た目の文字数と一致する結果が得られます。
実用例
strlen関数は、実際の開発現場でさまざまな場面で活用されています。
ここからは、strlen関数を使ったコード例を見ていきましょう。どの例も身近な動物を題材にしているので、イメージしやすくなっているはずです。
そのプログラム例はパスワードチェック、入力確認、データ整形など、実務でも活用するような処理です。
このような例を通じて、「文字列の長さを取得して活用する」というstrlenの基本的な使い方を覚えていきましょう。
strlen関数を使いこなせるようになると、ユーザーの入力を適切にチェックしたり、データを安全に処理したりできるようになります。
パスワード文字数チェック
ユーザー登録時のパスワード文字数をチェックする処理です。
会員登録システムやログイン機能でよく使われる、最小文字数を満たしているかを判定し、適切なメッセージを表示する方法です。
出力結果
パスワードは8文字以上である必要があります
パスワード「dog123」の文字数をstrlen($password)で取得し、最小文字数の8文字と比較しています。
if (strlen($password) >= $minLength)で条件をチェックし、条件を満たさない場合は適切なエラーメッセージを表示するというプログラムです。
このようなチェック機能により、セキュリティ要件を満たすパスワードの検証ができます。
文字列の切り詰め処理
長すぎる文字列を指定した文字数で切り詰める処理です。
SNSの投稿や商品説明などで、よく目にすることもあるのではないでしょうか。表示スペースに制限がある場合に、文字列を適切な長さに調整して省略記号を付加する方法です。
出力結果
シベリア...
文字列の長さをstrlen($description)でチェックし、制限文字数(10文字)を超えているかを確認しています。
超えている場合は、substr()関数で指定した文字数分を切り出し、最後に「...」を付けて省略表示を作成するという形です。
ちなみに、substr()関数は「substr(文字列, 開始位置, 長さ)」という形で使います。
この例では、substr($description, 0, $max_length)で、文字列の最初(0)から指定した長さ分だけを取り出しています。
また、$maxLengthについて、「10」といった数値を指定すると文字化けする可能性があります。上述した、strlen()関数は、厳密にはバイト数を返すという特徴があるためです。
このような現象を防ぐために、mb_strlen()やmb_substr()を使うことができるということも覚えておきましょう。
配列内の最長文字列検索
配列に格納された複数の文字列から、最も長い文字列を見つける処理です。
データ分析や一覧表示機能でよく使われる、データの中から特定の条件に合致する要素を効率的に抽出する方法です。
出力結果
最長の動物名: ハムスター
配列の各要素をforeachで順番に処理し、それぞれの文字列長をstrlen()で取得します。
現在確認中の動物名が、これまでの最長文字列より長い場合は、その動物名を新しい最長文字列として更新するような処理です。
最終的に、すべての動物名の中で最も文字数の多いものを返します。
入力フォームのバリデーション
ユーザーが入力したデータの文字数をチェックし、適切な範囲内であるかを検証する処理です。
ちなみに、バリデーションとは「入力されたデータが正しいかどうかをチェックすること」を指します。
例えば、「パスワードは8文字以上」「名前は20文字以内」といったルールに従っているかを確認する処理のことです。
Webアプリケーションの入力フォームなどでよく使われる、入力値の妥当性を確認する重要な機能です。
出力結果
入力は有効です: tiger
ユーザーの入力「tiger」の文字数を確認し、最小文字数(2文字)と最大文字数(20文字)の範囲内かをチェックします。
最初に短すぎるかを確認し、次に長すぎるかを確認して、どちらの条件にも当てはまらない場合は有効な入力として処理します。
このような段階的なチェックにより、適切な入力値のみを受け付けることができます。
文字数に応じた処理分岐
文字列の長さによって、異なる処理を実行する条件分岐です。
コンテンツ管理システムや表示制御でよく使われる、データの特性に応じて適切な処理を自動的に選択し、効率的なプログラム実行を実現する方法です。
出力結果
短い名前: lion
この例では、動物名の文字数を取得し、switch文を使って文字数に応じて分類しています。
6文字以下なら「短い名前」、12文字以下なら「普通の名前」、それより長いなら「長い名前」として分類します。
空文字列チェック処理
文字列が空かどうかを判定し、適切な初期値を設定する処理です。データの存在確認やデフォルト値の設定において、特に有用です。
出力結果
デフォルト名を設定: 名前未設定のペット
ペット名が空文字列かどうかをstrlen($petName) == 0でチェックします。
文字数が0の場合(空文字列)は、デフォルトの名前を設定し、そうでなければ元の名前をそのまま使用します。
このような処理により、データが存在しない場合の適切な初期値設定ができます。
文字数カウンター機能
リアルタイムで文字数をカウントし、制限値との差分を表示する処理です。SNSの投稿機能やコメント入力欄でよく使われる、一般的な機能の実装例です。
出力結果
現在の文字数: 36
残り文字数: 14
現在のメッセージの文字数をstrlen($message)で取得し、制限文字数から引き算して残り文字数を計算します。
現在の文字数と残り文字数を両方表示することで、ユーザーにとってわかりやすくしているのがポイントです。
このような実装で、文字数制限のあるサービスにおいて、ユーザビリティの向上を図ることができます。
ファイル名の長さ制限チェック
ファイル名が適切な長さであるかを確認し、OS制限に準拠しているかを検証する処理です。
ファイルアップロード機能でよく使われる、重要なセキュリティチェックです。
出力結果
ファイル名OK: パンダの写真.jpg (22文字)
制限を超えている場合はエラーメッセージを表示し、そうでなければファイル名と文字数を表示して正常であることを知らせます。
ファイルアップロード時のエラーを事前に防ぐことができる実装例です。
まとめ
PHPのstrlen関数は、文字列処理において基本的でありながら非常に重要な役割を果たします。
この記事では、strlenの基本的な構文から実用的な応用例まで解説しました。strlenの活用場面について確認しておきましょう。
strlenが活躍する場面
- フォーム入力の文字数チェックをしたいとき
- データベースに保存する前の文字数の制限をチェックしたいとき
- 画面表示でのユーザビリティの向上を図りたいとき
- ファイル処理でのエラーを防止したいとき
strlenを使う上で押さえておきたいポイントは下記です。
重要なポイント
- 日本語などの文字はバイト数で計算されるため、見た目より大きな数値になる
- 空っぽの文字列や値が入っていない変数へのエラーハンドリング
- プログラムの動作速度を考慮して効率的な文字数をチェックする
- 空白も文字数としてカウントされる
初めてPHPを学ぶ方も、この記事で紹介したstrlen関数の基本的な使い方を参考にコードを書いてみてください。
文字列の長さを適切にチェックできるようになれば、ユーザーの入力を安全に処理できるようになります。安全で使いやすいWebアプリケーションを作る重要な一歩です。
ぜひstrlen関数をマスターして、より安全で効率的なPHPアプリケーションの開発ができるようになりましょう。