Bonjour,
Je ne suis pas un expert en RegEx, aussi je vous demande un peu d'aide pour vérifier mon travail.

afin d'augmenter la sécurité de mes formulaires, j'ai eu l'idée de vérifier chaque champs grâce a des RegEx. Puis pour améliorer mon code, j'ai créer une fonction qui regroupe toutes les possibilités dont j'ai besoin.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
function valid_formulaire($chaine, $type, $min, $max, $defaut = NULL){
	switch ($type) {
	case "letter":
		// Accepte les lettres Majuscule ou Minuscule
		// e.g: Les mots simples, nom, prénom, etc.
		// e.g: "Pascal", "Maison"
		$filter = "/^[A-Za-z]+$/";
 
	case "name":
		// Accepte les lettres Majuscule ou Minuscule l'Apostrophe et l'Espace.
		// e.g: Pour les noms composés.
		// e.g: "Pascal LEGAL", "Ma maison est bleue"
		$filter = "/^[A-Za-z]([A-Za-z\s]*[A-Za-z])*$/";
 
	case "adress":
		// Accepte les lettres Majuscule ou Minuscule, les chiffres, l'apostrophe et l'Espace.
		// e.g: Adresse, phrases simples sans caractères spéciaux
		// e.g: "16 Rue de l'industrie", "Charles a 3 chiens"
		$filter = "/^[A-Za-z]([A-Za-z0-9\s]*[A-Za-z0-9])*$/";
 
	case "number":
		// Accepte les chiffres (dans une chaine alphanumérique).
		// e.g: Code Postal, Téléphone, etc...
		// e.g: "75000", "0199887766"
		$filter = "#^[0-9]$#";
 
	case "mail":
		// Accepte les lettres Minuscule, les chiffres, le tiret du 6, l'underscore, le point et l'arobase.
		// e.g: Adresse Mail.
		// e.g: "toto@mondomaine.com"
		$filter = "|^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]{2,})+$|i";
 
	case "url":
		// Accepte les urls.
		// Accepte les url de type http, https, ou ftp.
		$filter = "/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i";
 
	case "string":
		// Accepte un max de choses.
		//   A EVITER
		$filter = "/^[\(\)\/\'\"\,\.\-\$\&\s@\?#_a-zA-Z\d]+$/";
 
	case "integer":
		// Accepte un nombre en tant qu'entier.
		$filter = "[-+]?\b\d+\b";
 
	case "float":
		// Accepte un nombre en tant que decimal.
		$filter = "(?<!\S)\d++(?!\S)";
 
	default:
		return "type error !";
		}
	if (isset($chaine)) {
		//Si la variable $chaine existe bien on effectue le test.
		preg_match($filter,$chaine,$arr);
		//Si la RegEx trouve un resultat, on l'extrait pour le renvoyer.
		if (!empty($arr)) {
			return substr($arr[0], $min, $max);
		} else {
			//Si il n'y a pas de resultat on renvoi la variable $Defaut.
			return $default;
		}
	}
}
Je souhaite être sur que les filtres que j'utilise correspondent bien a mes différents types de champs. Merci à ceux qui se pencheront sur mon travail.

Pascal