Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   php деление значения строковой переменной (http://forum.oszone.net/showthread.php?t=30961)

Guest 14-10-2004 09:43 212363

есть переменная $a="Василий";
нужно задать градиентный цвет.

цвет всему слову задать легко:

echo "<font color=red>".$a."</font>";

а как написать код ПОКРАСИВЕЕ так чтобы средние буквы были синим цветом?

т.е. надо <font color=red>Ва<font color=blue>сил</font>ий</font>

vadimiron 14-10-2004 14:33 212364

Смотрим в сторону функции substr
Например, на скорую руку можно такую функцию написать
Код:

function coloring ($str)
{
    $len_of_str=strlen($str);
    if ($len_of_str<=2)
    {
        return 0;
    }
    else
    {
            if ($len_of_str<=5)
            {
                 echo "<font color=red>".substr($str,0,1)."</font>";
                 echo "<font color=blue>".substr($str,1,$len_of_str-2)."</font>";
                 echo "<font color=red>".substr($str,$len_of_str-1,1)."</font>";
            }
            else
            {
                 echo "<font color=red>".substr($str,0,2)."</font>";
                 echo "<font color=blue>".substr($str,2,$len_of_str-4)."</font>";
                 echo "<font color=red>".substr($str,$len_of_str-2,2)."</font>";
            }
    }

}

Смысл работы: если строка $str состоит из 2 или менее знака, то ничего не делаем, если от трёх до пяти, то красим первую и последнюю букву красным, всё что в середине синим
Если больше 5 знаков, то красим первые две и последние две буквы красным, середину синим.
Это был просто пример использования функции

Guest 14-10-2004 14:49 212365

в таком случае проще писать
Код:

if (strlen($str)>2)
{
$f="<font red>$str[0]<font blue>$str[1]</font>$str[2]</font>";
}

и т.д.

а как сделать чтобы если величина больше 5, красить не две первых и последних буквы красным, а ровно 1/3 от величины в начале и в конце?

strlen($str)/3=?

vadimiron 14-10-2004 16:39 212366

Да, но например 7/3 выдаст значение 2,333333
Чтобы выдавать без значений после запятой, то можно воспользоваться, например, следущей функцией
bcdiv ();

Guest 14-10-2004 17:12 212367

класс, спасибо!
только вот всеравно както не красиво у нас получилось(


Время: 07:46.

Время: 07:46.
© OSzone.net 2001-