{% else-1 %}
text = текст, hexfrom, hexto = html код цвета (формат #000000 или без решётки с 6 символами).

Регулярка для проверки ввода цвета перед записью в БД:
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;
}
3 42 0
0

Нет фото
• 24 фев 2016, 19:42


Я к тому, что если еспользуеш mb_* хоть кодировку указывай ))

0

Нет фото
Anvar * 3.33
• 23 фев 2016, 16:53


Лоликонщик, strlen использовал изначально, но не корректно работает с кириллицей, возможно что не на всех хостингах.

Второй вариант +

0

Нет фото
• 22 фев 2016, 23:17


$lenght = mb_strlen($text);

Вместо этого лучше использовать strlen (быстрее) или хотяб кодировку укажи, если начал mb_* использовать $lenght = mb_strlen($text, 'UTF-8');