3

我需要检查 $_GET 中的值是否为 rgb 值的函数。我错过了什么?

function is_rgb($val)
{
    return (bool)preg_match("/^(rgb(s*b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])bs*,s*b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])bs*,s*b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])bs*))|(rgb(s*(d?d%|100%)+s*,s*(d?d%|100%)+s*,s*(d?d%|100%)+s*))$/",
        $val);
}

if(!isset($_GET["header_bg_color"])) $header_bg_color = "E8F0F2";
else $header_bg_color = is_rgb($_GET["header_bg_color"]);
4

2 回答 2

7

十六进制验证函数

function validHex($hex) {
   return preg_match('/^#?(([a-f0-9]{3}){1,2})$/i', $hex);
}

$hex = '#FFFFFF';
if ( validHex($hex) ) {
   echo 'valid hex color';
}
else {
   echo 'invalid hex color';
}

rgb 验证函数

function validRgb($rgb) {
   return count($rgb) == 3 && is_numeric(implode($rgb)) && max($rgb) <= 255;
}

$rgb['r'] = '255';
$rgb['g'] = '255';
$rgb['b'] = '255';
if ( validRgb($rgb) ) {
   echo 'valid rgb color';
}
else {
   echo 'invalid rgb color';
}
于 2015-08-19T02:16:47.663 回答
0

这决定了函数的内部并且有一个非常简单的正则表达式。

function is_rgb($val) {
    if (preg_match('/^[A-F0-9]{6}$/', $val)) {
        //If valid return the rgb value if it is valid
        return $val;
    }
    else {
        return 'E8F0F2';
    }
}

$header_bg_color = is_rgb($_GET['header_bg_color']);
echo $header_bg_color;

这也假设您尝试在 GET 变量中仅接受 RGB 值。

于 2013-08-13T07:05:04.370 回答