【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 */ 7function demonstrateStrtolowerCyrillic(): void 8{ 9 // 英字のみの文字列の例 10 $asciiString = "Hello World PHP!"; 11 echo "オリジナル (ASCII): " . $asciiString . PHP_EOL; 12 echo "strtolower (ASCII): " . strtolower($asciiString) . PHP_EOL; 13 echo PHP_EOL; 14 15 // 数字と記号を含む文字列の例 16 $mixedString = "PHP Version 8.0!"; 17 echo "オリジナル (Mixed): " . $mixedString . PHP_EOL; 18 echo "strtolower (Mixed): " . strtolower($mixedString) . PHP_EOL; 19 echo PHP_EOL; 20 21 // キリル文字を含む文字列の例 (UTF-8エンコーディングを想定) 22 // strtolower関数は、デフォルトではロケール設定に依存し、ASCII以外のマルチバイト文字 23 // (例: キリル文字) を適切に小文字に変換できない場合があります。 24 // PHP 8においても、この関数は基本的にはASCII文字セットを対象としています。 25 // したがって、以下の出力は期待通りに小文字化されない可能性があります。 26 $cyrillicString = "Пример Текста На Кириллице"; 27 echo "オリジナル (キリル文字): " . $cyrillicString . PHP_EOL; 28 echo "strtolower (キリル文字): " . strtolower($cyrillicString) . PHP_EOL; 29 echo PHP_EOL; 30 31 // 別のキリル文字の例 32 $cyrillicString2 = "РУССКИЙ ЯЗЫК"; 33 echo "オリジナル (キリル文字2): " . $cyrillicString2 . PHP_EOL; 34 echo "strtolower (キリル文字2): " . strtolower($cyrillicString2) . PHP_EOL; 35 echo PHP_EOL; 36} 37 38// 関数の実行 39demonstrateStrtolowerCyrillic();
PHPのstrtolower関数は、引数(string $string)として渡された文字列に含まれる大文字アルファベットを小文字に変換し、結果をstringとして返す関数です。
サンプルコードでは、まず「Hello World PHP!」のような英字のみ、または「PHP Version 8.0!」のような数字や記号を含む文字列の変換を示します。strtolower関数はこれらのASCII文字を期待通りに小文字に変換します。
しかし、strtolower関数は主にASCII文字セットを対象としており、PHP 8においてもキリル文字のようなASCII以外のマルチバイト文字を適切に小文字に変換できない場合があります。これは、デフォルトではロケール設定に依存し、ASCII以外のマルチバイト文字には適用されません。
実際に、サンプルコードのキリル文字の例では、strtolower関数を適用しても期待通りに小文字に変換されない可能性が高いです。日本語やキリル文字を含むマルチバイト文字列を確実に小文字化するには、mb_strtolower関数など、マルチバイト対応関数の利用を検討してください。
strtolower関数は、主に半角英数字や記号などのASCII文字を小文字に変換する際に使用されます。サンプルコードで示されているように、英字のみや数字を含む文字列に対しては期待通りに機能します。
しかし、キリル文字や日本語などのASCII以外のマルチバイト文字を含む文字列の場合、strtolower関数はそれらの文字を正しく小文字に変換できないことがあります。これはPHP 8においても同様の挙動です。
そのため、多言語対応が必要なシステムで文字列を小文字化する際には、mb_strtolower関数を使用することを強く推奨します。mb_strtolower関数は文字エンコーディングを指定できるため、マルチバイト文字を安全かつ正確に小文字に変換できます。この関数の特性を理解し、プロジェクトの要件に合わせて適切な関数を選択することが重要です。
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関数を必ず使用してください。これにより、意図通りの文字変換処理を実現し、プログラムをより安全に運用できます。
PHP strtolowerとUnicode小文字変換の違い
1<?php 2 3/** 4 * strtolower関数とマルチバイト文字(Unicode)処理の違いを示すサンプルコード。 5 * 6 * PHPのstrtolower関数は、主にASCII文字に対してのみ機能します。 7 * Unicodeなどのマルチバイト文字を小文字に変換する場合は、mb_strtolower関数を使用する必要があります。 8 * このコードは、その違いとmb_strtolowerの必要性を示します。 9 */ 10function demonstrateStrtolowerAndUnicode(): void 11{ 12 // 1. ASCII文字列でのstrtolowerの動作 13 $asciiString = "HELLO World!"; 14 echo "オリジナル (ASCII): " . $asciiString . PHP_EOL; 15 echo "strtolower (ASCII): " . strtolower($asciiString) . PHP_EOL; 16 echo PHP_EOL; 17 18 // 2. Unicode文字列(特に特殊な大文字)でのstrtolowerの動作(期待通りに変換されない例) 19 // 例: トルコ語の「ドット付き大文字I」 (İ) 20 $unicodeStringWithDiacritic = "İSTANBUL"; // 'İ' はUnicodeの特殊な大文字 21 echo "オリジナル (Unicode - 特殊文字): " . $unicodeStringWithDiacritic . PHP_EOL; 22 // strtolowerは'İ'を認識せず、小文字に変換できません。 23 echo "strtolower (Unicode - 特殊文字, 期待と異なる): " . strtolower($unicodeStringWithDiacritic) . PHP_EOL; 24 echo PHP_EOL; 25 26 // 3. Unicode文字列を正しく小文字に変換するためのmb_strtolowerの動作 27 // mb_strtolowerは指定されたエンコーディング(ここではUTF-8)に基づいて 28 // マルチバイト文字を適切に処理します。 29 echo "オリジナル (Unicode - 特殊文字): " . $unicodeStringWithDiacritic . PHP_EOL; 30 // mb_strtolowerは'İ'を対応する小文字'i'に正しく変換します。 31 echo "mb_strtolower (Unicode - 特殊文字, UTF-8): " . mb_strtolower($unicodeStringWithDiacritic, 'UTF-8') . PHP_EOL; 32 echo PHP_EOL; 33 34 // 4. 日本語文字列でのmb_strtolowerの動作(小文字の概念がないため変化はないが、マルチバイト対応を示す) 35 $japaneseString = "PHP プログラミング"; 36 echo "オリジナル (日本語): " . $japaneseString . PHP_EOL; 37 // 日本語には大文字・小文字の区別がないため、mb_strtolowerを適用しても見た目に変化はありません。 38 // しかし、この関数がマルチバイト文字列に対応していることを示しています。 39 echo "mb_strtolower (日本語, UTF-8): " . mb_strtolower($japaneseString, 'UTF-8') . PHP_EOL; 40} 41 42// 関数を実行して結果を表示 43demonstrateStrtolowerAndUnicode();
strtolower関数は、指定された文字列に含まれる大文字を小文字に変換して返すために使用されます。この関数は引数として変換したい文字列(string $string)を受け取り、小文字に変換された新しい文字列(string)を戻り値として返します。
しかし、strtolower関数は主にASCII文字セット(半角英数字など)に最適化されており、Unicodeなどのマルチバイト文字に対しては期待通りの変換が行われない場合があります。例えば、トルコ語の「ドット付き大文字I (İ)」のような特殊なUnicode文字をstrtolowerで処理しても、対応する小文字へは変換されません。
Unicodeを含むマルチバイト文字列を正しく小文字に変換するには、mb_strtolower関数を使用する必要があります。mb_strtolower関数は、指定されたエンコーディング(例: UTF-8)に基づいてマルチバイト文字を適切に処理し、正確な小文字変換を提供します。
提供されたサンプルコードでは、ASCII文字列がstrtolowerによって正しく小文字に変換される一方で、strtolowerでは特殊なUnicode文字が変換されないこと、そしてmb_strtolowerを使用することで同じUnicode文字が正しく小文字に変換される具体的な挙動が示されています。このように、文字列を扱う際には文字コードの特性を理解し、適切な関数を選択することが重要です。
PHPのstrtolower関数は主にASCII文字の小文字変換に利用され、日本語や絵文字を含むUnicodeなどのマルチバイト文字に対しては正しく機能しない場合があります。そのため、特殊な文字を含む文字列では期待通りの結果が得られないことがあります。システム開発において、ユーザーからの入力や多言語対応が必要な場面では、必ずmb_strtolower関数を使用してください。mb_strtolower関数を用いる際には、第二引数で文字列のエンコーディング(一般的には'UTF-8')を明示的に指定することで、様々な言語の文字を安全かつ正確に小文字に変換し、予期せぬ文字化けや誤変換を防ぐことができます。