Testeur de regex

Soyez le premier à donner votre avis sur cette source.

Snippet vu 7 118 fois - Téléchargée 16 fois

Contenu du snippet

Dans le cadre des champs de formulaire, on contrôle la validité de l'entrée par une regex.

Sauf que pour un champ donné, disons l'adresse email par exemple, on trouve 3 milliards de regex sur le net, et bien sûr, pas deux identiques. Sans compter que ce sont souvent les débutants qui postent leur belle regex toute fraiche sortie de leur petits doigts fébriles tapotant sur son nouveau clavier bluetooth. (moi aussi j'ai des petits doigts fébriles -:)

Résultat: peu de regex trouvées sur le net fonctionnent vraiment ou correspondent exactement à votre besoin propre.

D'où ce tout petit script utilitaire uniquement pour vérifier les regex sur votre système ou pour vous aider à comprendre les regex et autres pcre/posix.

Soit on tape la regex à tester dans le champ prévu à cet effet, soit on laisse le champ vide, et le test sera effectué sur le tableau de regex inclus dans le script. Bien sûr, il suffit d'en ajouter d'autres en fonction de ce que vous voulez tester.

Nota:
- A n'utiliser qu'en admin évidemment.
- C'est aussi largement améliorable en ajouter des preg_match_all, en vérifiant les retour etc..

PS: il y a quand même un site plutôt pas mal pour les regex, mais c'est surtout US donc pour les adresses, pas très utile...
http://regexlib.com/Default.aspx

Source / Exemple :


<?php
 
session_start();
error_reporting(E_ALL);

// QQ REGEX
	$_SESSION['regex'] = array(
	'nom'			=> "#[a-zéèàêâùïüëA-Z][^0-9]#",
	'prenom'		=> "#[a-zéèàêâùïüëA-Z][^0-9]#",
	'raison_sociale'=> "#[a-zéèàêâùïüëA-Z][^0-9]#",
	'telephone'		=> "#^0[1-689]([-. ]?[0-9]{2}){4}$#",
	'email'			=> "#^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-z]{2,4}$#",
	'siret'			=> "#[0-9]{14}#",
	'ape_naf'		=> "#[0-9]{5}#",
	'rue'			=> "#^[a-zA-Z0-9 ,-/éèàêâùïüë]{0,50}$#",
	'ville'			=> "#^[a-zA-Z1-9-/ éèàêâùïüë]{1,50}$#",
	'code_postal'	=> "#^[0-9]{2} ?[0-9]{3}$#",
	'date_naissance'=> "#^[0-3]?[0-9]/\-[01][0-9]/\-[0-9]{4}$#",
	'login'			=> "#^[a-zA-Z0-9_@]{4,20}$#",
	'pwd'			=> "#^[a-zA-Z0-9_@]{8,20}$#",
	'phrase_cle'	=> "#[a-zéèàêâùïüëA-Z]#",
	'ip'			=> '#^(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}$#',
	'test_ip1'		=> '#^(168|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}$#'
	
	);
	
// Testeur de regex

if (isset($_POST['reg']) && isset($_POST['val']) ) {
	$value = htmlspecialchars($_POST['val']);

	// teste d'une seule regex
	if (!empty($_POST['reg'])) {
		$regex = htmlspecialchars($_POST['reg']) ;
		if ( preg_match( $regex, $value, $matches ) ) {
			echo '<br/><b>Ok</b>: <u>'. $value . '</u> matche avec <u>' . $regex . '</u><br/>' ;
		}
		else{
			echo '<br/><b>NOk : <u>'. $value . '</u> ne </b> matche <b>pas</b> avec <u>' . $regex . '</u><br/>' ;
		}
	}
	// teste le tableau des regex
	else {
		$regex = $_SESSION['regex'];
		foreach($regex as $reg_name => $reg) {
			if ( preg_match( $reg, $value) ) {
				echo '<br/>Match: La regex <b>' . $reg_name . '</b>(<u>'. $reg . '</u>) matche avec la valeur <u>' . $value .'</u>';
			}
		}
	}
}

echo '<form method="post" action="/admin/test_regex.php">';
	echo '<p>';
		echo '<label for="reg">La regex </label><br/>';
		if (is_array($regex)) {$aff='';} else { $aff=$regex;}
		echo '<input type="text" id="reg" name="reg" size="100" value="'. $aff . '"/><br/>';
		echo '<label for="ma_valeur">La valeur à tester </label><br/>';
		echo '<input type="text" id="ma_valeur" name="val" size="100" value="'. $value. '"/>';
	echo '</p>';
	echo '<p>';
       echo '<input type="submit" /> <input type="reset" />';
   echo '</p>';

echo '</form>';

?>

Conclusion :


void

A voir également

Ajouter un commentaire

Commentaires

inwebo
Messages postés
381
Date d'inscription
lundi 12 novembre 2007
Statut
Membre
Dernière intervention
23 octobre 2014

[HS]
Pour activer PHP5 chez free, il suffit de mettre comme extension de fichier '.php5'.
/HS
neigedhiver
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
15
J'ai pourtant pris la peine de préciser que je ne disais pas ça pour toi ^^
Je ne faisais qu'un commentaire théorique, sur la discussion de fond au sujet des sources compatibles PHP4. Je n'allais pas plus loin. Je n'ai pas parlé de regex inutiilisé sous PHP5 ou autre...
Bref.

Chez Free, hyper compliqué, il faut un .htaccess à la racine du site avec comme contenu :
php 1

Je sais pas si c'est vraiment "hacker", d'autant que c'est dans la doc/faq de Free quelque part.

Sinon, la doc pour les filtres est peut-être light, autant que certaines classes de la SPL, mais l'utilisation des filtres est quand même quelque chose de relativement simple.

Et pas de soucis, je suis cool, hein ;)
cs_hornetbzz
Messages postés
60
Date d'inscription
lundi 1 décembre 2008
Statut
Membre
Dernière intervention
3 janvier 2011

Ah bon, tu n'utilises plus les regex en PHP5/6 ? les fonctions preg_match ou preg_match_all n'existent plus elles non plus ? Donc tant que les regex vivront, ce mini-code sera compatible : rien n'empêche de l'utiliser en php5 ou php6. D'autant plus que la doc concernant Filter est plutôt light. Et pour Free, je crois de mémoire qu'il faut hacker pour forcer PHP5. Bon allez, keep cool, promis, je mettrais une belle classe POO en PHP5 la prochaine fois ;-)
neigedhiver
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
15
[HS]
Y'a quand même un moment, faudra arrêter de proposer des sources PHP4, hein. Je dis pas ça pour toi, mais simplement, s'arrêter à considérer que tout le monde n'a pas PHP5...
Je rappelle quand même que PHP en est à sa version 5.3 depuis plus de 6 mois, et que PHP4 n'est plus développé depuis 2 ans ni supporté depuis 1an 1/2.
Même Free permet d'utiliser PHP5. Même Ubuntu est à PHP5.2.
Un jour, faudra arrêter de regarder en arrière et tourner la tête franchement en avant : c'est justement parce que trop de gens hésitent à passer à PHP5 que les hébergeur de tous poils ne font pas tous l'effort d'installer PHP5.
Et après, on se retrouve avec des codes obsolètes et monstrueux juste parce qu'on veut que ce soit compatible PHP4... Et pourquoi pas compatible PHP3 tant qu'on y est ?

Voilà, c'était histoire de râler un peu, histoire d'être fidèle à mon image (et puis je suis de mauvais poil à cause de mon pc, désolé de vous le faire subir).
/HS
Archima
Messages postés
37
Date d'inscription
samedi 19 avril 2008
Statut
Membre
Dernière intervention
13 avril 2011

Pas faux ;) Je ne contredit pas non plus l'intérêt de cette classe ^^

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.