Interrogation sur expression reguliere [Résolu/Fermé]

Signaler
-
 jupiler -
Bonjour,

A votre avis ici

if (preg_match("^[0-9]{15}$^", $ss))

signifie bien que la variable $ss doit avoir 15 caractères mini et maxi compris entre 0 et 9 ?

Merci

13 réponses

Messages postés
437
Date d'inscription
mercredi 29 juillet 2009
Statut
Membre
Dernière intervention
23 septembre 2010
74
Bonjour,

Non, l'expression est incorrecte, je viens de la tester, et cela dit si la chaine contient 15 chiffres à la suites. si on en met 16 ça dit vrai et si on met 15 chiffres et une lettre (ou plus) au début ou à la fin ça dit vrai aussi.

en revanche, j'ai testé avec ça: if (preg_match("#^[0-9]{15}$#", $ss)) et ça n'a pas bugué.
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 83728 internautes nous ont dit merci ce mois-ci

merci pour ta reponse mais ca ne marche pas j ajouter un 16eme caractères et ca marche ....
Messages postés
437
Date d'inscription
mercredi 29 juillet 2009
Statut
Membre
Dernière intervention
23 septembre 2010
74
Es-tu bien sûr d'avoir enlevé le dernier "^"?
dans mes tests avec 16 chiffres ça ne marche pas...
quand j enlv le chapeau a ma syntaxe initial voila l erreur

Warning: preg_match() [function.preg-match]: No ending delimiter '^' found in W:\patient.php on line 32
Messages postés
437
Date d'inscription
mercredi 29 juillet 2009
Statut
Membre
Dernière intervention
23 septembre 2010
74
N'oublie pas les "#" en début et fin de chaine alors ^^
j comprends pas voila ce que j ai mis ca devrait fonctionenr mais il me le prend pas il ajoute encore

if (preg_match("#^[0-9]{15}$#", $ss))
Messages postés
437
Date d'inscription
mercredi 29 juillet 2009
Statut
Membre
Dernière intervention
23 septembre 2010
74
Etonnant!

Avec ma page de test, ça marche pourtant bien:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" 
   "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
		<title>Page de tests php</title>
		<?php 
			function e($string) {
				echo '<p>'. $string .' est de la bonne forme?: '. preg_match("#^[0-9]{15}$#", $string);
				if (preg_match("#^[0-9]{15}$#", $string)) {
					echo '-oui</p>';
				}else{
					echo '-non</p>';
				}
			}
		?>
		<script language="javascript">
		</script>
	</head>
	<body>
		<?php 
			e("012345678901234");
			e("123456789012345");
			e("00000000000000");
			e("000000000000000");
			e("7777777777777777");
			e("a454654621654567");
			e("a454654a621654567");
			e("12345678901234565465213015462465460546046");
		?>
	</body>
</html>
ton stst fonctionne egalement chez moi mais pas la peut etre est ce du a l imbrication de mes if voici le code
if (isset($_POST['ok']))
{
if (preg_match("#^([0-9]){2}/([0-9]){2}/([1-2])([0-9]){3}$#", $naissance))
{
if (preg_match("#^[0-9]{15}$#", $ss))
{
$sql2= "UPDATE login SET nom='".$_POST['nom']."', prenom='".$_POST['prenom']."', naissance='".$_POST['naissance']."', ss='".$_POST['ss']."' WHERE ss='".$ss."'";
$req2= mysql_query($sql2) or die('Erreur SQL !'.$sql2.'<br>'.mysql_error());
if(isset($req2))
{
echo 'Patient modifié';
$sql = "SELECT * FROM login where ss='".$ss."'";
$req = mysql_query($sql) or die( mysql_error() ) ;
$total = mysql_num_rows($req);
{
echo '<center><table class="table2">'."\n";
echo '<tr >';
echo '<td class="td-title">Nom</td>';
echo '<td class="td-title">Prénom</td>';
echo '<td class="td-title">Date de naissance</td>';
echo '<td class="td-title">Numéro de sécurité sociale</td>';
echo '</tr>'."\n";
while($row = mysql_fetch_array($req))
{
echo '<tr>';
echo '<td class="td-p">'.$row["nom"].'</td>';
echo '<td class="td-p">'.$row["prenom"].'</td>';
echo '<td class="td-p">'.$row["naissance"].'</td>';
echo '<td class="td-p">'.$row["ss"].'</td>';
echo '</tr>'."\n";
}
echo '</table></center>'."\n";
}
}
}
else
{
echo "<script language=\"JavaScript\">\n";
echo "alert('Numéro de sécurité sociale invalide');";
echo 'window.history.back();';
echo "</script>";
}
}
else
{
echo "<script language=\"JavaScript\">\n";
echo "alert('Format date non valide');";
echo 'window.history.back();';
echo "</script>";
}
}
Messages postés
437
Date d'inscription
mercredi 29 juillet 2009
Statut
Membre
Dernière intervention
23 septembre 2010
74
A première vue il y n'y a pas d'erreur...

Essaye de faire plein d'"echo" de contrôle voir où passe le programme, le contenu des variables, ...
oki je vais regarder ca merci
je viens d tester en gros tout fonctionn auf le if preg match du $ss il effectue l update comme si il n y avait pas de conditions ....
pour info Pour tester j ai mis ca

if (preg_match("#^[1]{1}$#", $ss))

et la il me prend bien en compte mon expression reguliere ...
problme reolu il vient venait d la variable $ss qui recuperait une precedente session plutot que le POST ... merci de votre aide