filter_input() hex Farbwert erlauben

Spelmann

Erfahrenes Mitglied
Hi Wissende,
ich versuche gerade einen hex-Wert aus einem Farbwähler zu filtern. Diese beiden Methoden funktionieren nicht:
PHP:
$lb_color = filter_var(
$_POST['lb_color'],
FILTER_SANITIZE_NUMBER_INT,
FILTER_FLAG_ALLOW_HEX
);
PHP:
$lb_color = filter_input(
INPUT_POST,
'lb_color',
FILTER_SANITIZE_NUMBER_INT,
FILTER_FLAG_ALLOW_HEX
);

In beiden Fällen werden die Buchstaben des HEX-Wertes aus der POST Übergabe entfernt.
Weiß jemand was ich falsch mache?

Dankeschön!
 
Gemäss PHP-Doku geht der FILTER_FLAG_ALLOW_HEX nur auf FILTER_VALIDATE_INT, nicht aber auf FILTER_SANITIZE_NUMBER_INT
http://php.net/manual/en/filter.filters.flags.php

Ich würde aber sowieso FILTER_VALIDATE_REGEXP verwenden um die Daten einzugrenzen

ungetestet
PHP:
$lb_color = filter_input(
    INPUT_POST,
    'lb_color',
    FILTER_VALIDATE_REGEXP,
    array('regexp' => '[[:xdigit]]{3}')
);
 
Danke Yaslaw,
mit dem Beispiel lautet das Ergebnis von var_dump($lb_color) allerdings immer bool(false).
Aber erstmal gut zu wissen, dass FILTER_SANITIZE_NUMBER_INT definitiv nicht geht.
Ich such mal weiter.
 
Versuch Yaslaws Ansatz mal so:

PHP:
$lb_color = filter_input(
    INPUT_POST,
    'lb_color',
    FILTER_VALIDATE_REGEXP,
    array('options' => array('regexp' => '/\A[[:xdigit:]]{6}\z/'))
);
 
Zurück