Petit soucis de Regex

Répondre
Keika
le 28/10/2010 à 07:54
Keika
Salut,

j'essaye de faire un petit code qui reconnait un code hexadecimal pour les couleurs web.
Pour le moment j'ai ca:

<?php
$color = $_GET['color'] ;
$hexa_pattern = "(#?([A-Fa-f0-9]){6}?)" ;

//Check if color is a color...
if(preg_match($hexa_pattern, $color, $matches)){
?>


Alors tant que le bon code est envoya ca marche, mais le truc c'est que ca accepte aussi des strings genre: 000000000000, parcequ'apparament le preg_match cherche un modele dans le string envoye. Alors que je veux qu'il n'accepte que des strings de 6 characteres et que ces 6 characteres obeissent a la regex.

Faut-il que je teste aussi la taille de ma string ou y a-t'il une autre solution ?

Merci d'avance

K.
Le PHP --> C'est dur !
i M@N
le 28/10/2010 à 09:22
i M@N
Hello.

Je verrai plus un pattern comme :
<?php
$hexa_pattern = "(^(#{1})([A-Fa-f0-9]{6})$)" ;
?>

Explication rapide :
^(#{1}) = commence (^) par 1 #
([A-Fa-f0-9]{6})$ = se termine ($) par 6 caractères dans A-Fa-f0-9

@+...
One Love, One Heart, One Unity.
Keika
le 28/10/2010 à 15:07
Keika
Mais iM@N, si je passe "12121#2222222211"

ca me retournera tout de meme true, car preg_match trouvera le pattern "#222222" dedans...
Le PHP --> C'est dur !
i M@N
le 28/10/2010 à 16:52
i M@N
reuh...
Je sais pas comment tu fais ou si tu dis ça parce que t'as pas essayé, mais si tu mets ça dans un fichier test.php ça fonctionne :
<?php
$color = '12121#2222222211';
$hexa_pattern = "(^(#{1})([A-Fa-f0-9]{6})$)" ;
//Check if color is a color...
if(preg_match($hexa_pattern, $color)){
echo 'OK';
}
else {
echo 'KO';
}
?>


@+...
One Love, One Heart, One Unity.
LA GLOBULE
le 28/10/2010 à 17:37
LA GLOBULE
Keika, non car iman a bien utilisé ^ en début de masque et $ en fin de masque.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours