第06回: 文字列関数 — 入力値の「汚れ」を取り除く実務の定番

章: 第1章: 文法の土台

フォームから届いた文字列、そのまま使っていませんか?

ユーザーが入力した文字列には、前後に余計なスペースが入っていたり、大文字・小文字が混在していたりします。そのまま使うとバグや検索ミスの原因になります。PHPには文字列を整形・検索するための関数が豊富に用意されており、覚えておくだけで実務の前処理が大幅に楽になります。

まずコードを動かしてみる


<?php
$text = '  hello php  ';
$text = trim($text);
echo strtoupper($text);

trim() で前後のスペースを除去し、strtoupper() で大文字に変換しています。たった2行でよくある入力の問題を解決できます。

よく使う文字列関数一覧

関数 役割
trim($str) 前後の空白除去 trim(' hello ')'hello'
strlen($str) 文字列の長さ strlen('PHP')3
strtolower($str) 小文字変換 strtolower('PHP')'php'
strtoupper($str) 大文字変換 strtoupper('php')'PHP'
strpos($str, $needle) 部分文字列の位置 strpos('hello', 'l')2
str_replace($old, $new, $str) 置換 str_replace('a', '@', 'banana')'b@n@n@'
substr($str, $start, $len) 部分取得 substr('hello', 1, 3)'ell'
mb_strlen($str) マルチバイト文字の長さ 日本語に必須

チェックポイント: 日本語を含む文字列には mb_strlen()mb_substr() などの mb_ 系関数を使いましょう。通常の strlen() はバイト数を返すため、日本語で正しい文字数が得られません。

実務でよくある使い方


<?php
$email = trim($_POST['email'] ?? '');
$email = strtolower($email); // 大文字を小文字に統一

if (strpos($email, '@') === false) {
    echo 'メールアドレスの形式が正しくありません';
}

まとめ & 次のステップ

  • trim() でフォーム入力の前後スペースを除去する習慣をつける
  • strtolower() でメールアドレスなどを小文字統一する
  • strpos() は見つからない場合に false を返す(=== false で判定する)
  • 日本語文字列には mb_ 系関数を使う
  • 文字列関数を組み合わせるだけで、入力値の前処理がほぼ完成する

次回は 数値演算を学びます。料金計算や集計処理に必要な演算子と関数を整理します。

Related Articles