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

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

作成日: 更新日:

基本的な使い方

ctype_alnum関数は、引数として与えられた文字列がすべて英字(アルファベット)と数字(0-9)で構成されているかを検証する関数です。この関数は、文字列内の各文字が、大文字・小文字のアルファベット('a'から'z'、'A'から'Z')または数字('0'から'9')のいずれかであるかどうかをチェックします。もし、文字列がこれらの文字のみで構成されている場合はtrueを返し、それ以外の文字(記号、スペース、句読点など)が一つでも含まれている場合はfalseを返します。空の文字列が引数として渡された場合もtrueを返します。

この関数は、主にユーザーからの入力値が期待通りの形式であるかを確認する際や、特定のデータが英数字のみで構成されていることを保証したい場合に役立ちます。例えば、ユーザー名やパスワードの入力がアルファベットと数字のみに限定されるべきであるといった、セキュリティやデータ形式の要件を満たすかどうかの検証に利用できます。この文字の判定は、現在のシステムロケールではなく、Cロケール(ASCII文字セット)の範囲で行われる点に注意が必要です。

構文(syntax)

1<?php
2
3/**
4 * 英数字 (アルファベットまたは数字) で構成されているかをチェックします。
5 *
6 * ctype_alnum ( string $text ) : bool
7 */
8
9$text1 = "HelloWorld123";
10$text2 = "Hello World!";
11$text3 = "12345";
12$text4 = "abcde";
13$text5 = "こんにちは"; // 非ASCII文字は英数字とみなされない場合がある (ロケール依存)
14
15var_dump(ctype_alnum($text1)); // true
16var_dump(ctype_alnum($text2)); // false (スペースと感嘆符が含まれるため)
17var_dump(ctype_alnum($text3)); // true
18var_dump(ctype_alnum($text4)); // true
19var_dump(ctype_alnum($text5)); // false (日本語が含まれるため)
20
21?>

引数(parameters)

string $text

  • string $text: アルファベット (a-z, A-Z) または数字 (0-9) のいずれか1文字以上で構成される文字列

戻り値(return)

bool

引数として渡された文字列が英数字のみで構成されている場合にtrueを、それ以外の場合にfalseを返します。

サンプルコード

PHP ctype_alnum関数で英数字チェックする

1<?php
2
3/**
4 * ctype_alnum関数の使用例を示すスクリプト。
5 * この関数は、指定された文字列がすべて英数字(アルファベットと数字)で構成されているかをチェックします。
6 * 英数字以外の文字(スペース、記号、日本語など)が含まれている場合、または文字列が空の場合はfalseを返します。
7 */
8
9/**
10 * 文字列が英数字のみで構成されているかを確認し、結果を表示する関数。
11 *
12 * @param string $text チェックする文字列。
13 * @return void
14 */
15function checkAlphanumericString(string $text): void
16{
17    // ctype_alnum関数を使って文字列が英数字のみかを確認
18    if (ctype_alnum($text)) {
19        echo "'{$text}' は、すべて英数字(アルファベットまたは数字)で構成されています。\n";
20    } else {
21        echo "'{$text}' は、英数字以外の文字を含むか、空文字列です。\n";
22    }
23}
24
25// ----- ctype_alnum関数の使用例 -----
26
27// 1. すべて英数字の文字列の例
28checkAlphanumericString("HelloWorld123"); // アルファベットと数字
29checkAlphanumericString("PHP");           // アルファベットのみ
30checkAlphanumericString("2024");          // 数字のみ
31
32// 2. 英数字以外の文字を含む文字列の例
33checkAlphanumericString("Hello World!");  // スペースが含まれる
34checkAlphanumericString("user_name");     // アンダーバーが含まれる
35checkAlphanumericString("パスワード");     // 日本語が含まれる
36
37// 3. 空文字列の例 (ctype_alnumは空文字列に対してfalseを返します)
38checkAlphanumericString("");
39
40?>

PHPのctype_alnum関数は、与えられた文字列がすべて英数字(アルファベットまたは数字)で構成されているかを効率的にチェックするための関数です。この関数はstring $textという形式でチェックしたい文字列を引数として受け取ります。

ctype_alnum関数は、指定された文字列のすべての文字がAからZ、aからz、または0から9の範囲内にある場合にのみtrue(真)を返します。もし文字列内にスペース、記号、日本語などの英数字以外の文字が一つでも含まれている場合、または文字列が空の場合にはfalse(偽)を返します。

サンプルコードでは、checkAlphanumericString関数を通じてctype_alnumの動作を確認しています。「HelloWorld123」のようにアルファベットと数字だけで構成された文字列にはtrueが返され、「Hello World!」(スペースを含む)や「user_name」(アンダーバーを含む)、さらには「パスワード」(日本語を含む)といった文字列にはfalseが返されることがわかります。また、空文字列を渡した場合もfalseとなる点も重要な挙動です。この関数を利用することで、ユーザー入力のバリデーションなどを簡単に行うことができます。

ctype_alnum関数は、指定された文字列が半角アルファベットと数字のみで構成されているかを厳密に確認します。この関数を使う上で特に注意すべき点は、スペース、アンダーバー、ハイフンなどの記号、あるいは日本語のようなマルチバイト文字が一つでも文字列に含まれていると、たとえそれ以外の部分が英数字であっても常にfalseと判定されることです。また、空文字列("")もfalseを返しますので、空ではないことを前提とする場合は、別途empty()などで確認する検討が必要です。この関数は、ユーザー名やパスワードなど、特定の文字種のみを許可するバリデーション処理に非常に有効です。より複雑な文字種やマルチバイト文字を含む文字列を詳細にチェックしたい場合は、正規表現の利用も考慮してください。

PHP ctype_alnum による英数字チェック

1<?php
2
3/**
4 * ctype_alnum関数の使用例。
5 *
6 * この関数は、指定された文字列が英字 (a-z, A-Z) と数字 (0-9) のみで
7 * 構成されているかをチェックします。
8 * 主にユーザー入力のバリデーション(例: ユーザーID、タグ名など)に利用されます。
9 * 空文字列や、スペース、記号、マルチバイト文字などが含まれる場合はfalseを返します。
10 *
11 * @param string $text チェックする文字列
12 * @return void
13 */
14function validateAlphanumericString(string $text): void
15{
16    echo "--- 文字列: '{$text}' ---\n";
17    if (ctype_alnum($text)) {
18        echo "結果: '{$text}' は英数字のみで構成されています。\n";
19    } else {
20        echo "結果: '{$text}' は英数字以外の文字を含んでいるか、または空です。\n";
21    }
22    echo "\n";
23}
24
25// ctype_alnum関数の動作を確認するための様々なテストケース
26validateAlphanumericString("php84");          // 英字と数字のみ -> true
27validateAlphanumericString("HelloWorld");     // 英字のみ -> true
28validateAlphanumericString("12345");          // 数字のみ -> true
29validateAlphanumericString("my_user_id");     // アンダーバーを含む -> false (記号は含まれない)
30validateAlphanumericString("Hello World");    // スペースを含む -> false
31validateAlphanumericString("password!");      // 感嘆符を含む -> false
32validateAlphanumericString("");               // 空文字列 -> false
33validateAlphanumericString("日本語");         // マルチバイト文字を含む -> false
34validateAlphanumericString("php 8.4");        // スペースとピリオドを含む -> false
35
36?>

ctype_alnumはPHPの組み込み関数の一つで、指定された文字列がすべて英字(a-z, A-Z)と数字(0-9)のみで構成されているかを確認します。この関数は、引数として検証したい文字列を受け取ります。そして、文字列が英字と数字だけで構成されている場合はブーリアン値のtrueを、それ以外の場合はfalseを戻り値として返します。

この関数は、主にユーザーからの入力を検証する「バリデーション」の際に役立ちます。例えば、ユーザーIDやタグ名など、特定の文字列形式が求められる場面で、入力された値が意図しない記号やスペース、マルチバイト文字を含んでいないかをチェックするのに利用できます。

サンプルコードでは、様々な文字列に対してctype_alnum関数を適用し、その結果を確認しています。「php84」や「HelloWorld」のような英数字のみの文字列はtrueと判定されます。一方、「my_user_id」のようにアンダーバーなどの記号が含まれる場合や、「Hello World」のようにスペースが含まれる場合、あるいは空文字列や「日本語」のようなマルチバイト文字を含む文字列は、すべてfalseと判定されることに注意が必要です。このように、ctype_alnum関数を使うことで、システムの要件に合った文字列形式を簡単に確認することができます。

ctype_alnum関数は、指定された文字列が半角の英字(a-z, A-Z)と数字(0-9)のみで構成されているかを厳しく確認します。初心者が間違いやすい点として、スペースやアンダーバーなどの記号、句読点、そして空文字列やマルチバイト文字(日本語など)が含まれている場合、この関数はすべてfalseを返しますので注意が必要です。「英数字」という言葉のイメージと異なり、記号類は一切許可されません。この関数は、ユーザーIDやタグ名のように、厳密に半角英数字だけを許容する入力値のバリデーションに活用すると安全かつ正確な処理が実現できます。

関連コンテンツ

【PHP8.x】ctype_alnum関数の使い方 | いっしー@Webエンジニア