Bonjour,

J'utilise le code suivant pour vérifier la validité des champs d'un formulaire.
Code php : 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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
<?php
 
/* Nom du programme : testChamps.php
 * Description : Ce programme contrôle les champs du formulaire (zones vides, champs incorrects)
*/
?>
 
<html>
<head>
<title>Test de champs</title>
</head>
<body>
<?php
 
/*Définir les champs à tester*/
 
$labels = array( "prenom" => "Pr&eacute;nom",
                 "nom" => "Nom",
				 "adresse" => "Adresse",
				 "codepostal" => "Code Postal",
				 "ville" => "Ville",
				 "email" => "Adresse Email",
				 "fixe" => "T&eacute;l&eacute;phone fixe",
				 "portable" => "T&eacute;l&eacute;phone portable");
 
foreach ($_POST as $champ => $valeur)
 
{
/* Contrôler la valeur des champs sauf celui du code postal*/
 
 if ($valeur == "" )
 {
 
	$tabloVide[] = $champ;
 
 } 
  elseif ($champ == "prenom" or $champ == "nom" or $champ == "ville")
 
 
  {   if (!preg_match("#[a-zA-Zàâéèëêïîôùüç' -,]{1,50}$#", $_POST[$champ]))
		{
         $mauvaisFormat[$champ] = 'mauvais';		
		}		 
  }		
 
  elseif ($champ == "adresse")
 
  {   if (!preg_match("#[a-zA-Z0-9àâéèëêïîôùüç' -,]{1,50}$#", $_POST[$champ]))
		{
         $mauvaisFormat[$champ] = 'mauvais';		
		}		 
  }		
 
  elseif ($champ == "email")
 
  {
    $atom   = '[-a-z0-9!#$%&\'*+\\/=?^_`{|}~]';           // Caractères autorisés avant l'arobase
    $domain = '([a-z0-9]([-a-z0-9]*[a-z0-9]+)?)';         // Caractères autorisés après l'arobase (nom de domaine)
 
    $regex = '/^' . $atom . '+' .                         // Une ou plusieurs fois les caractères autorisés avant l'arobase
    '(\.' . $atom . '+)*' .                               // Suivis par zéro point ou plus
                                                          // Séparés par des caractères autorisés avant l'arobase
    '@' .                                                 // Suivis d'un arobase
    '(' . $domain . '{1,63}\.)+' .                        // Suivis par 1 à 63 caractères autorisés pour le nom de domaine
                                                          // Séparés par des points
    $domain . '{2,63}$/i';                                // Suivi de 2 à 63 caractères autorisés pour le nom de domaine
 
     if (!preg_match($regex, $_POST[$champ])) 
      {
        $mauvaisFormat[$champ] = 'mauvais';
      }
 
  }
 
  elseif ($champ == "codepostal")
 
  {   if (!mb_eregi("^([0-9]{5})$", $_POST[$champ]))
		{
         $mauvaisFormat[$champ] = 'mauvais';		
		}		 
  }	
 
 
 
 
  elseif ($champ == 'fixe' or $champ == 'portable')
  { if (!preg_match('`^(0[1-68][-. ]?(\d{2}[-. ]?){3}\d{2})$`',$valeur))  
		{
         $mauvaisFormat[$champ] = 'mauvais';		
		}		 
  }				 
}   //Fin de la boucle foreach pour $_POST				 
 
if (@sizeof($tabloVide) > 0 or @sizeof($mauvaisFormat) > 0)				 
	{
     if (@sizeof($tabloVide) > 0)	
		{  
        /* Message pour information manquante*/
        echo "<b> Un des champs obligatoires n'a pas &eacute;t&eacute; renseign&eacute;.
                  Vous devez saisir : </b><br>";
        /* Affichage du nom des informations requises*/
        foreach ($tabloVide as $champ => $valeur)
         {
         echo "&nbsp;&nbsp;&nbsp;{$labels[$valeur]}<br>";
         } //Fin de la boucle foreach pour les champs vierges		 
        }
     if (@sizeof($mauvaisFormat) > 0)		
        { 
		/* Message pour information invalide*/
        echo "<b> Un ou plusieurs champs contiennent des informations qui 
                  semblent incorrectes. Corrigez le format de : </b><br>";
        /*Affiche la liste des informations incorrectes*/				  
        foreach ($mauvaisFormat as $champ => $valeur)
         {
         echo "&nbsp;&nbsp;&nbsp;{$labels[$champ]}<br>";
         } //Fin de la boucle foreach pour les champs vierges	
        }
 
//Réafficher le formulaire		
 
     echo "<p>";	 
     echo "<form action='$_SERVER[PHP_SELF]' method = 'POST'>
		   <table>";
     foreach ($labels as $champ => $label)
	 { 
 
	   $dataOk[$champ]= strip_tags(trim($_POST[$champ]));
 
	   echo $dataOk[$champ];
	   echo "<tr>
	         <td style = 'text-align: right; font-weight: bold'>
				  {$labels[$champ]}</td>
		     <td><input type = 'text' name = '$champ' size = '65'
			     maxlength = '65' value='$dataOk[$champ]'></td>
			 </tr>";
 
	 } 			 
	 echo "<tr>
            <td colspan='2' style='text-align: center'>
            <input type='submit' value='Submit name and Phone Number'>";
     echo "</td></tr></table>
           </form>";
     exit();		   
}				 
 
/*Test réussi*/				 
	 echo "Toutes les donn&eacute;es sont correctes.";
 
?>
</body></html>

Pour le tester, je rentre les coordonnées d'une personne en oubliant par exemple son nom.
Un message d'erreur s'affiche et le formulaire est rechargé avec les données du formulaire sauf que les données contenant un apostrophe ' sont systématiquement tronquées au niveau de l'apostrophe.

Que dois-je faire pour remédier à ce problème ?

Merci d'avance.