【PHP8.x】strtolower関数の使い方

strtolower関数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

strtolower関数は、指定された文字列内のアルファベットの大文字をすべて小文字に変換する関数です。

この関数は、引数として渡された文字列を評価し、文字列中に含まれる大文字のアルファベット(AからZ)を対応する小文字(aからz)に変換します。数字、記号、スペース、および既に小文字であるアルファベットは、変換されずに元のまま保持されます。

たとえば、「Hello World」という文字列がこの関数に渡されると、「hello world」という結果が返されます。この機能は、文字列の比較を行う際に大文字と小文字の区別をなくしたい場合や、ユーザーからの入力を受け取った後に文字列の書式を統一したい場合などに非常に役立ちます。例えば、ログイン認証時にユーザー名の大文字・小文字を無視して照合する際や、検索機能で大文字・小文字を区別しない検索条件を作成する際に利用できます。

ただし、strtolower関数は、主にASCII文字(半角英数字など)に特化しており、日本語、中国語、韓国語などのマルチバイト文字や、ドイツ語のウムラウト文字(Ä, Ö, Ü)やフランス語のアクセント付き文字(É, À)といった特殊な文字を正確に小文字に変換することはできません。これらの文字を含む文字列を扱う場合は、mb_strtolower関数など、マルチバイト文字に対応した関数を使用する必要があります。変換が成功した場合、変換された新しい文字列が返されます。

構文(syntax)

1<?php
2echo strtolower("Hello World!");
3?>

引数(parameters)

string $string

  • string $string: 小文字に変換したい文字列

戻り値(return)

string

文字列をすべて小文字に変換した新しい文字列を返します。

サンプルコード

PHP strtolowerで文字列を小文字に変換する

1<?php
2
3declare(strict_types=1);
4
5/**
6 * strtolower()関数の使用例を示すためのサンプル関数
7 *
8 * この関数は、受け取った文字列を小文字に変換し、
9 * 変換前と変換後の両方を画面に出力します。
10 *
11 * @param string $string 変換対象の文字列
12 * @return void
13 */
14function showLowerCaseConversion(string $string): void
15{
16    // strtolower()関数を使い、文字列内のアルファベットをすべて小文字に変換します。
17    // 数字や記号は変更されません。
18    $lowerCaseString = strtolower($string);
19
20    // 結果を比較しやすくするために、変換前と変換後の文字列を出力します。
21    // PHP_EOL は、環境に応じた改行コードを出力するための定義済み定数です。
22    echo '変換前の文字列: ' . $string . PHP_EOL;
23    echo '変換後の文字列: ' . $lowerCaseString . PHP_EOL;
24}
25
26// 大文字、小文字、数字、記号が混在したサンプル文字列を定義します。
27$sampleText = 'Hello World! This is PHP 8 Sample Code.';
28
29// 定義した関数を呼び出し、サンプル文字列を小文字に変換して表示します。
30showLowerCaseConversion($sampleText);
31
32?>

PHPのstrtolower関数は、文字列に含まれるすべてのアルファベットを小文字に変換するために使用されます。

この関数は、string $stringとして変換したい文字列を引数に取ります。指定された文字列内の大文字のアルファベットのみを小文字に変換し、新しい文字列を戻り値として返します。数字や記号は変換の対象外となり、元のまま保持されます。

サンプルコードでは、'Hello World! This is PHP 8 Sample Code.'という文字列を例に、strtolower関数の動作を示しています。この文字列をstrtolower関数に渡すと、すべてのアルファベットが大文字から小文字に変換され、'hello world! this is php 8 sample code.'という結果が生成されます。

実行結果として、変換前の元の文字列と、strtolower関数によって小文字に変換された文字列の両方が画面に表示され、関数の動作が分かりやすく確認できます。出力時に使用されているPHP_EOLは、プログラムが実行されている環境に合わせた改行コードを挿入するためのPHPの定数です。strtolower関数は、文字列の大文字・小文字を簡単に操作できる基本的な機能です。

strtolower関数は、主に半角英字を小文字に変換するために使用されます。日本語などのマルチバイト文字を小文字に変換したい場合は、期待通りの結果が得られない可能性があるため、mb_strtolower関数を使用することを強く推奨します。

引数には必ず文字列型を渡してください。PHP 8でdeclare(strict_types=1)が指定されている場合、文字列以外の値を渡すと型エラーが発生します。また、数字や記号は変換対象外であり、元の文字列が直接変更されるのではなく、小文字に変換された新しい文字列が戻り値として返されますので、この点に留意して利用してください。

PHP strtolower 特殊文字の扱い方

1<?php
2
3/**
4 * strtolower() 関数が特殊文字 (特にマルチバイト文字) をどのように扱うかを示すサンプル。
5 *
6 * strtolower() はASCII文字のみを小文字に変換します。
7 * マルチバイト文字 (日本語、全角英数字など) には影響しません。
8 */
9function demonstrateStrtolowerWithSpecialCharacters(): void
10{
11    // 1. 標準的なASCII文字列の変換
12    $asciiString = "HELLO World 123!@#";
13    echo "オリジナル (ASCII):       " . $asciiString . PHP_EOL;
14    echo "strtolower 適用後: " . strtolower($asciiString) . PHP_EOL;
15    echo PHP_EOL;
16
17    // 2. マルチバイト文字 (日本語) を含む文字列の変換
18    // strtolower() はマルチバイト文字には作用しません。
19    $multibyteString = "PHP の特殊文字 (テスト) と MultiByte STRING";
20    echo "オリジナル (マルチバイト): " . $multibyteString . PHP_EOL;
21    echo "strtolower 適用後: " . strtolower($multibyteString) . PHP_EOL;
22    echo PHP_EOL;
23
24    // 3. 全角英数字の変換
25    // 全角英数字もマルチバイト文字として扱われるため、strtolower() では変換されません。
26    $fullwidthChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
27    echo "オリジナル (全角英数字):  " . $fullwidthChars . PHP_EOL;
28    echo "strtolower 適用後: " . strtolower($fullwidthChars) . PHP_EOL;
29    echo PHP_EOL;
30
31    // 注意: マルチバイト文字を小文字に変換したい場合は、mb_strtolower() を使用してください。
32    // echo "mb_strtolower 適用後: " . mb_strtolower($multibyteString, 'UTF-8') . PHP_EOL;
33    // echo "mb_strtolower 適用後 (全角): " . mb_strtolower($fullwidthChars, 'UTF-8') . PHP_EOL;
34}
35
36// 関数の実行
37demonstrateStrtolowerWithSpecialCharacters();
38

PHPのstrtolower関数は、指定された文字列に含まれる英大文字をすべて小文字に変換して返す関数です。この関数はstring $stringという一つの文字列を引数として受け取り、小文字に変換されたstringを戻り値として返します。

このサンプルコードは、strtolower関数が特にマルチバイト文字(日本語や全角英数字など)をどのように扱うかを示しています。最初の例では、「HELLO World」のような標準的なASCII文字を含む文字列を変換しており、期待通り「hello world」とすべて小文字に変換されることがわかります。

しかし、二番目の例で日本語などのマルチバイト文字を含む文字列を変換すると、「PHP の特殊文字 (テスト)」の部分は変わらず、「MultiByte STRING」のようなASCII文字の部分のみが小文字に変換されます。これは、strtolower関数がASCII文字セットに限定されており、マルチバイト文字には作用しないためです。同様に、三番目の例にある「ABCDEFGHIJKLMNOPQRSTUVWXYZ」のような全角英数字も、マルチバイト文字として扱われるため変換されません。

したがって、日本語や全角英数字といったマルチバイト文字を含む文字列を小文字に変換したい場合は、strtolower関数ではなく、mb_strtolower関数を使用する必要があります。mb_strtolower関数は、マルチバイト文字の変換に特化しており、適切なエンコーディングを指定することで正確に小文字変換を行えます。

PHPのstrtolower関数は、英数字や記号などの標準的なASCII文字のみを小文字に変換する点にご注意ください。日本語や全角英数字といったマルチバイト文字を含む文字列に対しては、これらの文字を小文字に変換せず、元の形式を保持します。システムエンジニアを目指す初心者は、全ての文字が小文字になると誤解しやすいため、この動作特性を理解しておくことが重要です。もし日本語や全角英数字も小文字に変換したい場合は、文字エンコーディングを考慮して動作するmb_strtolower関数を必ず使用してください。これにより、意図通りの文字変換処理を実現し、プログラムをより安全に運用できます。

関連コンテンツ