Interrogation sur expression reguliere

Résolu/Fermé
jupiler - 18 août 2009 à 11:56
 jupiler - 18 août 2009 à 15:59
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

M@dien Messages postés 437 Date d'inscription mercredi 29 juillet 2009 Statut Membre Dernière intervention 23 septembre 2010 74
18 août 2009 à 12:15
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 pour ta reponse mais ca ne marche pas j ajouter un 16eme caractères et ca marche ....
0
M@dien Messages postés 437 Date d'inscription mercredi 29 juillet 2009 Statut Membre Dernière intervention 23 septembre 2010 74
18 août 2009 à 14:01
Es-tu bien sûr d'avoir enlevé le dernier "^"?
dans mes tests avec 16 chiffres ça ne marche pas...
0
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
M@dien Messages postés 437 Date d'inscription mercredi 29 juillet 2009 Statut Membre Dernière intervention 23 septembre 2010 74
18 août 2009 à 14:18
N'oublie pas les "#" en début et fin de chaine alors ^^
0
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))
0
M@dien Messages postés 437 Date d'inscription mercredi 29 juillet 2009 Statut Membre Dernière intervention 23 septembre 2010 74
18 août 2009 à 14:31
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>
0
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>";
}
}
0
M@dien Messages postés 437 Date d'inscription mercredi 29 juillet 2009 Statut Membre Dernière intervention 23 septembre 2010 74
18 août 2009 à 15:03
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, ...
0
oki je vais regarder ca merci
0
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 ....
0
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 ...
0
problme reolu il vient venait d la variable $ss qui recuperait une precedente session plutot que le POST ... merci de votre aide
0