Webアプリケーションを開発していると、ユーザーが入力したメールアドレスを小文字に統一したり、ローマ字の氏名を大文字に変換したりといった「文字列の変換処理」は頻繁に発生します。
PHPには、こうした処理を行うための便利な関数が標準で多数用意されています。
特に日本語環境では、文字化けを防ぐためにマルチバイト対応の関数を使う必要がある場面も多いでしょう。
この記事では、PHPで英字の大文字・小文字を変換する基本的な方法から、全角文字にも対応したマルチバイト関数の使い方、さらにはPHP 8.4で追加された最新の関数まで、現在のベストプラクティスをサンプルコード付きで徹底解説します。
![]() 執筆者:マヒロ |
|
- OS:Windows 11 / macOS Sequoia
- IDE:Visual Studio / VS Code / IntelliJ IDEA
- その他:Chrome DevTools / 各言語最新安定版
※本メディアでは、上記環境にてコードの動作と情報の正確性を検証済みです。
アルファベットを大文字・小文字に変換する基本関数
まずは、半角英数字(ASCII文字)を対象とした最も基本的な変換方法を紹介します。
英語のシステムや、内部的な識別コードなどを扱う場合は、これらの関数を使うのが一般的です。
文字列をすべて小文字にする strtolower
文字列に含まれる大文字のアルファベットを、すべて小文字に変換するには strtolower 関数を使用します。
<?php
$email = "User@Example.COM";
// すべて小文字に変換
$lower_email = strtolower($email);
echo "元の文字列: " . $email . "\n";
echo "変換後 : " . $lower_email . "\n";
?>
実行結果
元の文字列: User@Example.COM
変換後 : user@example.com
strtolower 関数は、引数として渡された文字列の中にある「A」から「Z」までの大文字を、対応する「a」から「z」までの小文字に置き換えます。
すでに小文字である文字や、数字、記号などはそのまま維持されます。メールアドレスの正規化(保存前に小文字に統一する処理)などで非常によく使われる関数です。
文字列をすべて大文字にする strtoupper
逆に、すべての文字を大文字に変換したい場合は strtoupper 関数を使用します。
<?php
$code = "php_session_id";
// すべて大文字に変換
$upper_code = strtoupper($code);
echo "元の文字列: " . $code . "\n";
echo "変換後 : " . $upper_code . "\n";
?>
実行結果
元の文字列: php_session_id
変換後 : PHP_SESSION_ID
strtoupper 関数は、文字列内の小文字アルファベットをすべて大文字に変換します。
定数の定義や、コード類のフォーマットを統一する際などに役立ちます。
日本語環境なら必須!マルチバイト対応の変換関数
先ほど紹介した strtolower などの関数は、基本的に半角英数字(シングルバイト文字)を対象としています。
そのため、全角のアルファベット「A」や「a」が含まれている場合、それらは変換されずに無視されてしまいます。
日本国内のサービスでは全角文字が入力されることも多いため、マルチバイト文字列関数(mb関数)を使うのが確実です。
全角文字も変換できる mb_strtolower / mb_strtoupper
関数の頭に mb_ を付けることで、全角文字を含めた変換が可能になります。
<?php
$text = "Hello World"; // 全角アルファベット
// 通常の関数(変換されない)
$normal_lower = strtolower($text);
// マルチバイト対応関数(変換される)
$mb_lower = mb_strtolower($text);
$mb_upper = mb_strtoupper($text);
echo "通常関数 : " . $normal_lower . "\n";
echo "mb_小文字 : " . $mb_lower . "\n";
echo "mb_大文字 : " . $mb_upper . "\n";
?>
実行結果
通常関数 : Hello World
mb_小文字 : hello world
mb_大文字 : HELLO WORLD
実行結果を見ると分かる通り、通常の strtolower では全角文字は変換されませんが、mb_strtolower を使うことで全角の「H」が全角の「h」に変換されています。
日本語のサイトを作る場合は、予期せぬ入力に対応するためにも、基本的にこちらの mb_ 系関数を使う癖をつけておくことをおすすめします。
先頭の文字だけを大文字・小文字にする方法
文章の書き出しや、人名の表記(例:Yamada)などで、先頭の1文字だけを変換したいケースもあります。
PHPには、こうした細かい制御を行うための関数も用意されています。
先頭を大文字にする ucfirst と単語ごとの ucwords
<?php
$sentence = "hello world. this is php.";
// 文字列全体の先頭だけ大文字にする
$first_upper = ucfirst($sentence);
// スペースで区切られた単語ごとの先頭を大文字にする
$words_upper = ucwords($sentence);
echo "ucfirst : " . $first_upper . "\n";
echo "ucwords : " . $words_upper . "\n";
?>
実行結果
ucfirst : Hello world. this is php.
ucwords : Hello World. This Is Php.
ucfirst(Upper Case First)は、文字列の一番最初の文字だけを大文字にします。
文章の開始位置を整えるのに便利です。
一方、ucwords はスペースで区切られた各単語の先頭をすべて大文字にします。
これは英語のタイトル表記(Title Case)などでよく利用されます。
【PHP 8.4新機能】マルチバイト対応の mb_ucfirst など
長らくPHPには「マルチバイト対応の ucfirst(mb_ucfirst)」が存在せず、自作する必要がありましたが、PHP 8.4からついに標準関数として追加されました。
<?php
// PHP 8.4以上で利用可能
$kana = "test"; // 全角
// 全角文字の先頭だけ大文字にする
$mb_first_upper = mb_ucfirst($kana);
echo "変換後: " . $mb_first_upper . "\n";
?>
実行結果
変換後: Test
mb_ucfirst を使えば、全角アルファベットであっても先頭の1文字だけを正しく大文字に変換できます。
同様に、先頭を小文字にする mb_lcfirst も追加されています。
最新環境であれば、面倒な自作関数を使わずに標準機能だけで完結させることができます。
かな文字(全角・半角)やカタカナ・ひらがなの変換
大文字・小文字の話とは少しそれますが、日本語処理では「全角カナを半角カナにしたい」「ひらがなをカタカナにしたい」という要望もセットで出てくることが多いです。
これには mb_convert_kana という非常に強力な関数を使います。
mb_convert_kana の使い方
<?php
$str = "アイウエオ";
// 半角カナを全角カタカナに変換 ('K' オプション)
$zen_kana = mb_convert_kana($str, "K");
// 全角カタカナを全角ひらがなに変換 ('c' オプション)
$hiragana = mb_convert_kana($zen_kana, "c");
echo "全角カナ: " . $zen_kana . "\n";
echo "ひらがな: " . $hiragana . "\n";
?>
実行結果
全角カナ: アイウエオ
ひらがな: あいうえお
mb_convert_kana は、第二引数のオプション文字を変えることで様々な変換が可能です。
よく使うオプションとして、r(全角英字を半角へ)、R(半角英字を全角へ)、n(全角数字を半角へ)などがあります。
大文字小文字の変換と合わせて、入力データの揺らぎを補正する際によく利用されます。
大文字・小文字を区別ずに比較・判定する方法
「ユーザーが入力したIDが、登録されているIDと一致するか確認したい(大文字小文字は気にしない)」という場合、一度両方を小文字に変換してから比較する方法もありますが、専用の比較関数を使う方がスマートです。
strcasecmp で比較する
<?php
$id1 = "AdminUser";
$id2 = "adminuser";
// 大文字小文字を区別せずに比較
// 一致していれば 0 が返る
if (strcasecmp($id1, $id2) === 0) {
echo "IDは一致しています。";
} else {
echo "IDは異なります。";
}
?>
実行結果
IDは一致しています。
strcasecmp(String Case Compare)は、2つの文字列を比較し、大文字と小文字の違いを無視して判定を行います。
戻り値が 0 であれば「一致」とみなせます。
わざわざ strtolower で変換する手間が省けるだけでなく、コードの意図(比較したいということ)が明確になるため、推奨される書き方です。
PHPのスキルを活かして年収を上げる方法
以上、PHPで大文字と小文字を変換する方法について解説してきました。
PHPエンジニアの需要は非常に高く求人数・案件数も多いため、転職によって数十万円の年収アップはザラで、100万円以上年収が上がることも珍しくありません。
なお、転職によって年収を上げたい場合は、エンジニア専門の転職エージェントサービスを利用するのが最適です。
転職エージェントも副業エージェントも、登録・利用は完全無料なので、どんな求人や副業案件があるのか気になる方は、気軽に利用してみるとよいでしょう。
| 年収アップにこだわりたい方 (平均アップ額138万円の実績) | テックゴー |
| 未経験・経験者問わず幅広く探したい方 | ユニゾンキャリア |
| 業界に精通した担当者に相談したい方 | キッカケエージェント |
| ゲーム業界への転職を志望する方 | ファミキャリ |
| エンジニア未経験からキャリアを築く方 | イーチキャリア |



