PHPのIntlChar::isxdigit()関数の使い方をわかりやすく解説
PHPのIntlChar::isxdigit()関数は、指定された文字が16進数の数字(ヘキサデジット)であるかどうかを判定するための関数です。国際化対応(i18n)を目的としたIntl拡張モジュールに含まれており、Unicode文字も正しく扱えるのが特徴です。
16進数として有効な文字とは?
この関数が「true」を返す対象となる文字は、以下の通りです。
- 半角数字(0〜9)
- 半角英字の小文字(a〜f)、大文字(A〜F)
- Unicodeコードポイント U+0041〜U+0046(ラテン大文字 A〜F)
- Unicodeコードポイント U+0061〜U+0066(ラテン小文字 a〜f)
- Unicodeコードポイント U+FF21〜U+FF26(全角大文字 A〜F)
- Unicodeコードポイント U+FF41〜U+FF46(全角小文字 a〜f)
構文
IntlChar::isxdigit( $val )
パラメータ
- $val − 判定対象となる値です。整数型のコードポイント、またはUTF-8でエンコードされた1文字の文字列を指定します。
戻り値
指定した$valが16進数の数字として有効な場合は true を、そうでない場合は false を返します。引数が不正な場合にはNULLが返されることもあります。
使用例①:基本的な判定
var_dump(IntlChar::isxdigit("10"));
echo "<br>";
// 文字型の入力データ
var_dump(IntlChar::isxdigit("A"));
echo "<br>";
var_dump(IntlChar::isxdigit("a"));
echo "<br>";
出力結果
bool(true) NULL bool(true)
この例では、「10」のような複数文字の文字列は単一の文字ではないためNULLが返されます。一方、「A」や「a」は有効な16進数の文字であるためtrueが返ります。
使用例②:Unicodeコードポイントや無効な文字の判定
<?php
var_dump(IntlChar::isxdigit("\u{0041}"));
echo "<br>";
var_dump(IntlChar::isxdigit("k"));
echo "<br>";
var_dump(IntlChar::isxdigit("9"));
echo "<br>";
?>
出力結果
bool(true) bool(false) bool(true)
「\u{0041}」はUnicode表記の大文字「A」に相当するためtrueとなり、アルファベットの「k」は16進数では使えないためfalse、数字の「9」は有効なのでtrueが返されます。
まとめ
IntlChar::isxdigit()関数を使うことで、半角・全角の英数字やUnicodeコードポイントを含む幅広い文字に対して、16進数としての妥当性を簡単にチェックできます。ユーザー入力のバリデーションや色コード(カラーコード)の検証など、16進数を扱う場面で活用すると便利です。
-
PHPのIntlChar::isIDStart()関数とは?使い方とサンプルコードを解説
IntlChar::isIDStart() 関数は、指定された文字が識別子(identifier)の先頭の文字として使用できるかどうかを判定するための関数です。変数名やクラス名など、PHPにおける識別子の命名規則をチェックしたい場合に役立ちます。 構文 bool IntlChar::isIDStart(val) パラメータ val − UTF-8文字列としてエンコードされた1文字、または整数値(Unicodeコードポイント)を指定します。 戻り値 引数 val が識別子の先頭文字として有効な場合は TRUE(bool(true)) を返し、無効な場合は FALSE(bool(false))
-
PHPのIntlChar::isxdigit()関数の使い方をわかりやすく解説
PHPのIntlChar::isxdigit()関数は、指定された文字が16進数の数字(ヘキサデジット)であるかどうかを判定するための関数です。国際化対応(i18n)を目的としたIntl拡張モジュールに含まれており、Unicode文字も正しく扱えるのが特徴です。 16進数として有効な文字とは? この関数が「true」を返す対象となる文字は、以下の通りです。 半角数字(0〜9) 半角英字の小文字(a〜f)、大文字(A〜F) Unicodeコードポイント U+0041〜U+0046(ラテン大文字 A〜F) Unicodeコードポイント U+0061〜U+0066(ラテン小文字 a〜f) Uni