Petit soucis de Regex
le 28/10/2010 à 07:54
Keika
Déconnecté
Le PHP --> C'est dur !
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}?)" ; 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 28/10/2010 à 09:22
i M@N
Déconnecté
One Love, One Heart, One Unity.
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
@+...
le 28/10/2010 à 15:07
Keika
Déconnecté
Le PHP --> C'est dur !
Mais iM@N, si je passe "12121#2222222211"
ca me retournera tout de meme true, car preg_match trouvera le pattern "#222222" dedans...
le 28/10/2010 à 16:52
i M@N
Déconnecté
One Love, One Heart, One Unity.
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})$)" ; if ( preg_match ( $hexa_pattern , $color ) ) { echo 'OK' ; } else { echo 'KO' ; } ?>
@+...
le 28/10/2010 à 17:37
LA GLOBULE
Déconnecté
111 111 111 x 111 111 111 = 12 345 678 987 654 321
Keika, non car iman a bien utilisé ^ en début de masque et $ en fin de masque.
Accès rapide :
PHP / MySQL
HTML / CSS
Javascript
Autres technologies
Le site
Les 3H du PHP
Le bar
Script / Production personnelle
Remonter