/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Bedste måde at tjekke om input er en hexid~
Fra : MooreHojer


Dato : 13-02-08 16:35

Hej NG

Hvordan tjekker man nemmest om brugerens input er et valid hexidecimal
farvekode?
Jeg har bruge to seperate test, én hvor den kræver # foran, og en hvor det
er valgfrit om man har den med.

På Forhånd Tak!

--
MooreHojer



 
 
Bertel Lund Hansen (14-02-2008)
Kommentar
Fra : Bertel Lund Hansen


Dato : 14-02-08 15:15

MooreHojer skrev:

> Hvordan tjekker man nemmest om brugerens input er et valid hexidecimal
> farvekode?

Det ved jeg ikke, men her er en mulighed:

function check_hexcolor($color,$hash) {
   if ($color[0]=='#')
      if (!$hash) return false;
      else $color=substr($color,1);
   $len=strlen($color);
   if ($len!=3 && $len!=6) return false;
   $legal=' 0123456789abcdef';
   $color=strtolower($color);
   for ($n=0; $n<$len; ++$n)
      if (!strpos($legal,$color[$n])) return false;
   return $len;
}

> Jeg har bruge to seperate test, én hvor den kræver # foran, og en hvor det
> er valgfrit om man har den med.

Du kalder funktionen med

   $farve='1a2b3c';
   if (check_hexcolor($farve,1)) echo "Okay";
   else echo "Ikke okay";

Anden parameter skal enten være 0 eller også et vilkårligt tal. 0
betyder at der ikke må være et #.

Returværdien er længden på farvekoden. Den kan aflæses som true,
men man kan jo lige så godt returnere en nyttig oplysning.

   if (check_hexcolor($farve,1)==3) echo "Kort kode som er okay";

Men der kommer sikkert en regexp-haj og viser noget meget
nemmere.

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

MooreHojer (14-02-2008)
Kommentar
Fra : MooreHojer


Dato : 14-02-08 17:00

> Men der kommer sikkert en regexp-haj og viser noget meget
> nemmere.

efter en søgning på google efter en regexp ti lformålet, og en del gætværk i
mit forsøg på at ændre den til mit formål (har kun brugt regexp én gang før)
er jeg kommet frem til følgende:

function isHexi($theValue, $requireSharp = "Yes")
{
if($requireSharp == "Yes")
$return = ereg("^#[a-fA-F0-9]{6}$", $theValue);
else
$return = ereg("^[#]?[a-fA-F0-9]{6}$", $theValue);

return $return;
}


som så vidt jeg kan se virker.

--
MooreHojer



Bertel Lund Hansen (14-02-2008)
Kommentar
Fra : Bertel Lund Hansen


Dato : 14-02-08 17:58

MooreHojer skrev:

> er jeg kommet frem til følgende:

Jeg er ikke god til regexp, så den del tager jeg mig ikke af, men
jeg vil foreslå:

> if($requireSharp == "Yes")
   return ereg("^#[a-fA-F0-9]{6}$", $theValue);
> else
   return ereg("^[#]?[a-fA-F0-9]{6}$", $theValue);

(og jeg ville kalde funktionen isHexa med a)

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

MooreHojer (14-02-2008)
Kommentar
Fra : MooreHojer


Dato : 14-02-08 19:00

>> if($requireSharp == "Yes")
> return ereg("^#[a-fA-F0-9]{6}$", $theValue);
>> else
> return ereg("^[#]?[a-fA-F0-9]{6}$", $theValue);

Optimeret kode er god kode

> (og jeg ville kalde funktionen isHexa med a)

Det er hermed gjort

--
MooreHojer



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste