This function shows its usefulness on a web site where a user is asked to entered a hexidecimal color code for a color. To prevent breaking W3C standard and having them enter in "neon-green" or the wrong type of code like 355511235.
In conjunction with strlen() you could create a function like this:
function check_valid_colorhex($colorCode) {
// If user accidentally passed along the # sign, strip it off
$colorCode = ltrim($colorCode, '#');
if (
ctype_xdigit($colorCode) &&
(strlen($colorCode) == 6 || strlen($colorCode) == 3))
return true;
else return false;
}
ctype_xdigit
(PHP 4 >= 4.0.4, PHP 5)
ctype_xdigit — 16 進数を表す文字かどうかを調べる
説明
bool ctype_xdigit
( string
$text
)
与えられた文字列 text のすべての文字が
16 進の '数字' であるかどうかを調べます。
パラメータ
-
text -
調べる文字列。
返り値
text のすべての文字が 16 進の '数字'
つまり 10 進の数字または [A-Fa-f]
だった場合に TRUE 、そうでない場合に FALSE を返します。
例
例1 ctype_xdigit() の例
<?php
$strings = array('AB10BC99', 'AR1012', 'ab12bc99');
foreach ($strings as $testcase) {
if (ctype_xdigit($testcase)) {
echo "The string $testcase consists of all hexadecimal digits.\n";
} else {
echo "The string $testcase does not consist of all hexadecimal digits.\n";
}
}
?>
上の例の出力は以下となります。
The string AB10BC99 consists of all hexadecimal digits. The string AR1012 does not consist of all hexadecimal digits. The string ab12bc99 consists of all hexadecimal digits.
注意
注意:
-128 から 255 までの整数値を渡すと、ひとつの文字の ASCII 値とみなします (負の値には 256 を足して、拡張 ASCII の範囲に収まるようにします)。 それ以外の整数値は、10 進数を含む文字列とみなします。
tom at hgmail dot com
14-Jan-2006 12:36
