Регулярка для проверки ввода цвета перед записью в БД:
if (!preg_match('/^([0-9a-fA-F]{6}|[0-9a-fA-F]{3})$/', $colour))
{
return false;
}
function username_gradient($text, $hexfrom, $hexto)
{
$lenght = mb_strlen($text);
$fromrgb = array_map('hexdec', str_split(ltrim(strtoupper($hexfrom), '#'), 2));
$torgb = array_map('hexdec', str_split(ltrim(strtoupper($hexto), '#'), 2));
$steprgb = array();
for($i = 0; $i < 3; $i++)
{
$steprgb[$i] = floor(($fromrgb[$i] - $torgb[$i]) / ($lenght));
}
$username = '';
for ($i = 0; $i <= $lenght; $i++)
{
if ($i < 1)
{
continue;
}
for($j = 0; $j < 3; $j++)
{
$hexrgb[$j] = $fromrgb[$j] - ($steprgb[$j] * $i);
if ($hexrgb[$j] > 255)
{
$hexrgb[$j] = 255;
}
$hexrgb[$j] = dechex($hexrgb[$j]);
$hexrgb[$j] = strtoupper($hexrgb[$j]);
if (strlen($hexrgb[$j]) < 2)
{
$hexrgb[$j] = "0$hexrgb[$j]";
}
}
$color = implode(null, $hexrgb);
$username .= '<span style="color: #' . $color . ';">' . mb_substr($text, $i-1, 1) . '</span>';
}
return $username;
}