💡 今日の3行まとめ
  • 全角・半角の表記揺れを直すときに str_replace() で1文字ずつ置換してはいけない
  • mb_convert_kana($text, 'asKV') を使えば「英数字・空白の半角化」と「半角カナの全角化」が1行で完了する
  • 標準の trim() は全角スペースを消せないため、先に半角スペースへ変換してから trim() するのが鉄則

1. 今日のお題とゴール

会員登録や検索フォームでユーザーが入力した「全角英数字」「半角カタカナ(濁点分離)」「前後の全角スペース」が混ざった文字列を、データベースに保存しやすい統一フォーマットへ一括整形するプログラムを作ります。

  • 全角の英字・数字(PHP や 2026)を半角(PHP / 2026)に変換する
  • 半角カタカナ(ガイド)を濁点付きの全角カタカナ(ガイド)に統合する
  • 前後に付いた全角スペース( )や半角スペースをすべて取り除く
// 期待する出力例
変換前: [ PHP入門 ガイド 2026 ]
変換後: [PHP入門 ガイド 2026]
郵便番号: 1000001

2. ❌ やりがちなNGコード vs ⭕ コピペで動く正解コード

❌ やりがちなNGコードBefore
<?php
$rawInput = ' PHP入門 ガイド 2026 ';

// 全角数字だけ愚直に列挙して置換し、そのまま trim() してしまう
$clean = str_replace(
    ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],
    ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],
    $rawInput
);
$clean = trim($clean); // 全角スペースや全角英字・半角カナがそのまま残る!

str_replace() では英字や半角カナに対応しきれません。さらに標準の trim() は全角スペース( )を削除できないため、前後に空白が残ってしまいます。

⭕ コピペで動く正解コード(PHP 8.3+)After
<?php
declare(strict_types=1);

$rawInput = ' PHP入門 ガイド 2026 ';

// 1. mb_convert_kana() で表記揺れを一括変換する
// a: 全角英数字・記号 → 半角 / s: 全角スペース → 半角スペース
// K: 半角カタカナ → 全角カタカナ / V: 濁点付きの半角カナ(ガ等)を1文字(ガ)に統合
$converted = mb_convert_kana($rawInput, 'asKV', 'UTF-8');

// 2. 全角スペースが半角スペースに変わったので、標準の trim() で前後を除去できる
$cleanText = trim($converted);

echo "変換前: [{$rawInput}]" . PHP_EOL;
echo "変換後: [{$cleanText}]" . PHP_EOL;

// 応用: 全角数字やハイフン混じりの郵便番号を「半角数字7桁」に揃える
$rawZip = ' 100ー0001 ';
$halfZip = mb_convert_kana($rawZip, 'n', 'UTF-8'); // n: 全角数字 → 半角数字
$digitsOnly = preg_replace('/\D/', '', $halfZip);  // 数字以外(空白・ハイフン等)を除去
echo "郵便番号: {$digitsOnly}" . PHP_EOL; // 1000001

3. ここだけ押さえる!3つのポイント

1黄金オプション「asKV」で入力揺れを一網打尽にする

第2引数には複数の変換モードを組み合わせて指定でき、実務では 'asKV' が定番です。V を忘れると「ガ」が「カ゛(2文字)」に分裂するため、必ず KV をセットで指定しましょう。

2「mb_convert_kana の s」→「trim()」の順番を守る

PHPの trim() は半角スペースや改行しか消せず、全角スペース( )はそのまま残ります。先にオプション s で半角スペースへ変換してから trim() を呼ぶのが鉄則です。

3郵便番号や電話番号は「n」変換+数字以外の除去が最強

長音「ー」やマイナス「−」などハイフン類は種類が多く、個別の置換は漏れのもとです。オプション 'n' で数字を半角にしたあと、preg_replace('/\D/', '', $str) で数字以外を除去すれば確実に数字だけを抽出できます。

4. 1分ミニチャレンジ

🚀 手を動かしてみよう

正解コードのオプション 'asKV' を、カタカナをすべて全角ひらがなに変える 'asHcV' に書き換えて実行してみましょう。「ふりがな入力欄」でカタカナが入力されても、自動でひらがなに統一できる便利さを体験できます。