Autor Zpráva
PetrPetr
Profil *
Mám formulář, kde lidé vkládají barvu fontu a potřeboval bych PHP script, který po odeslání zkontroluje, zda-li vyplnil dobře, tj. zda-li jde o barvu, aby tam nevyplňoval jiné texty.

$barva = "#000000";

Dále mě zajimá, jak pak takovou barvu převést do RGB barev.
juriad
Profil
function to_rgb($barva) {
  if(!preg_match('/#[0-9a-f]{3}([0-9a-f]{3})?/i', $barva)) {
    return FALSE;
  }
  if(strlen($barva) == 4) {
    $r = substr($barva, 1, 1);
    $r .= $r;
    $g = substr($barva, 2, 1);
    $g .= $g;
    $b = substr($barva, 3, 1);
    $b .= $b;
  } else {
    $r = substr($barva, 1, 2);
    $g = substr($barva, 3, 2);
    $b = substr($barva, 5, 2);
  }
  return array(hexdec($r), hexdec($g), hexdec($b));
}

var_dump(to_rgb('#ahoj'));
var_dump(to_rgb(''));
var_dump(to_rgb('abc'));
var_dump(to_rgb('#000'));
var_dump(to_rgb('#000000'));
var_dump(to_rgb('#abc'));
var_dump(to_rgb('#ABC'));
var_dump(to_rgb('#aabbcc'));



Jiné řešení je zmíněné vkomentářích hexdec funkce v dokumentaci.
http://www.php.net/manual/en/function.hexdec.php#99478
peta
Profil
juriad To resi pripady #FFF a #FFFFFF, ale mnohem lepsi je, kdyz si tu barvu ze stringu dokazes vytahnout bez ohledu, kolik parazitnich znaku tam navic bude.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: