Regex toujours...

Regex toujours... - Divers - Programmation

Marsh Posté le 18-07-2004 à 19:12:45    

Salut!
 
J'aimerais un petit coup de main pour les regex, c'est vraiment quelque chose que je n'arrive pas à m'approprier.
 
J'aimerais une regex qui permet les caractères alphanumériques avec des espaces mais qui autorise également l'apostrophe.
 
Actuellement, je n'ai pas de gestion de l'apostrophe:
/^\w[\w\s]*\w$/ (PERL)
 
C'est pour du PHP, donc de la regex Perl ou de la regex PHP.
 
 
Merci d'avance.

Reply

Marsh Posté le 18-07-2004 à 19:12:45   

Reply

Marsh Posté le 18-07-2004 à 21:56:42    

([[:alnum:]][[:space:]]\')
 
?


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 19-07-2004 à 00:50:00    

Kikoo vous ! :hello:  
Je vais voir si ça marche.
 
Merci !:)
 

Reply

Marsh Posté le 19-07-2004 à 00:58:17    

Non apparament ca ne marche pas.
'zdazdza' ERREUR
blabla ' bla bla ERREUR
 
Apparament ca ne laisse pas passez grand chose en fait:
dzadazdaz ERREUR

Reply

Marsh Posté le 19-07-2004 à 01:19:50    

c'est pourtant équivalent à  :
 

Code :
  1. ([a-zA-Z0-9]\s\')


ou ca :
 

Code :
  1. (\w\s\')


 
enfin je crois [:autobot]
 
c'estq quoi que tu veux faire exactement ?


Message édité par simogeo le 19-07-2004 à 01:20:09

---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 19-07-2004 à 01:26:09    

Une expression réguliere qui controle si la chaine est composé de caracteres alphanumériques avec éventuellement des espaces et des apostrophes.

Reply

Marsh Posté le 19-07-2004 à 01:32:39    

/^[[:alnum:][:space:]']+$/


 
plutôt non ?


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 19-07-2004 à 01:38:56    

gm_superstar a écrit :

/^[[:alnum:][:space:]']+$/


 
plutôt non ?


 
test:
 
blabla ERREUR
bla'bla ERREUR
bla bla ERREUR
bla' bla ERREUR
 
 :sweat:


Message édité par smilm le 19-07-2004 à 01:39:46
Reply

Marsh Posté le 19-07-2004 à 02:14:55    

ha...oups...

Code :
  1. $maregex="/^[[:alnum:][:space:]']+$/";
  2. if(!ereg($maregex,$nom) or strlen($nom)<4)
  3. {
  4.   $msg.="Le nom de votre alliance est incorrect. Utilisez uniquement des caractères alphanumériques avec éventuellement des espaces; 4 caractères minimum.<br>";
  5.   $error=1;
  6. }


 
Ya quelque chose qui va pas la dedans ?


Message édité par smilm le 19-07-2004 à 02:15:11
Reply

Marsh Posté le 19-07-2004 à 02:14:55   

Reply

Marsh Posté le 19-07-2004 à 02:30:22    

Preg_match()...
Désolé.
 
Par contre ta solution ne marche pas avec un "Bla bla ' bla bla" par exemple.
 
 
Ca ne marche pas non plus avec les solutions de simogeo en utilisant le preg_match().


Message édité par smilm le 19-07-2004 à 02:32:51
Reply

Marsh Posté le 19-07-2004 à 18:43:53    

petit up  :bounce:

Reply

Marsh Posté le 19-07-2004 à 21:09:07    

SmilM a écrit :

Preg_match()...
Désolé.


Ben oui [:spamafote]

SmilM a écrit :


Par contre ta solution ne marche pas avec un "Bla bla ' bla bla" par exemple.


Comment ça, "ça marche pas" ? avec "Bla bla ' bla bla" preg_match renvoie TRUE ce qui est bien le résultat attendu vu ce que tu attends de ta regex...


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 19-07-2004 à 21:09:42    

gm_superstar > [:itm]


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 21-07-2004 à 20:41:39    

gm_superstar a écrit :

Ben oui [:spamafote]
 
Comment ça, "ça marche pas" ? avec "Bla bla ' bla bla" preg_match renvoie TRUE ce qui est bien le résultat attendu vu ce que tu attends de ta regex...


 
Oki I try again.

Reply

Marsh Posté le 21-07-2004 à 20:48:24    

Once again it doesn't work.

Code :
  1. $nom=$_POST['nom']; // Provient d'un formulaire, j'ai verifié, $nom passe bien, je peux l'afficher.
  2. [...]
  3. $maregex="/^[[:alnum:][:space:]']+$/";
  4. if(!preg_match($maregex,$nom) or strlen($nom)<4)
  5. {
  6. $msg.="Le nom de votre alliance est incorrect. Utilisez uniquement des caractères alphanumériques avec éventuellement des espaces; 4 caractères minimum.<br>";
  7. $error=1;
  8. }
  9. echo preg_match($maregex,$nom) ."-- $nom <br>";
  10. /*
  11. Avec Bla bla ' bla bla , s'affiche à l'écran le message d'erreur ci-dessus.
  12. L'echo ci dessus m'affiche exactement:
  13. 0-- Bla bla \' bla bla  
  14. */


Message édité par smilm le 21-07-2004 à 20:50:52
Reply

Marsh Posté le 21-07-2004 à 21:01:31    

Bon j'ai une fois de plus tester, en ligne cette fois.
 
http://smil.m.free.fr/divers/test.php
 
Le code de ce fichier:
 

Code :
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <html>
  3. <head>
  4. <title>Document sans titre</title>
  5. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  6. </head>
  7. <body>
  8. <?
  9. if(isset($_POST['create']))
  10. {
  11. $error=0;
  12. $description=$_POST['description'];
  13. $nom=$_POST['nom'];
  14. $dicton=$_POST['dicton'];
  15. if($nom=='')
  16. {
  17.  $error=1;
  18.  $msg="Veuillez indiquer un nom pour votre alliance.";
  19. }
  20. if(strlen($nom)>30)
  21. {
  22.  $error=1;
  23.  $msg="Le nom de votre alliance est trop long (30 caractères maximum).<br>";
  24. }
  25. $maregex="/^[[:alnum:][:space:]']+$/";
  26. echo"$maregex <br>";
  27. if(!preg_match($maregex,$nom) or strlen($nom)<4)
  28. {
  29. $msg.="Le nom de votre alliance est incorrect. Utilisez uniquement des caractères alphanumériques avec éventuellement des espaces; 4 caractères minimum.<br>";
  30. $error=1;
  31. }
  32. echo preg_match($maregex,$nom)."-- $nom <br>";
  33. }
  34. ?>
  35. <form action="test.php" method="post" name="alli">
  36.   <table width="80%" border="0" align="center" cellpadding="4" cellspacing="0" class="tabin">
  37.     <tr class="cellulegris1">
  38.       <td width="20%"> <p>Nom de l'alliance</p></td>
  39.       <td width="80%"> <p>
  40.           <input name="nom" type="text" maxlength="30">
  41.         </p></td>
  42.     </tr>
  43.   </table>
  44.   <table width="80%" border="0" align="center" cellpadding="4" cellspacing="0" class="tabin">
  45.     <tr class="cellulegris2">
  46.       <td colspan="2" class="cellulebas"><div align="center">
  47.           <input type="submit" name="create" value="Créer" class="bouton">
  48.         </div></td>
  49.     </tr>
  50.   </table>
  51. </form>
  52. </body>
  53. </html>

Reply

Marsh Posté le 21-07-2004 à 21:01:59    

Ben écoute...
 
http://djailles.free.fr/hfr/prog/pcre.php
 
Vérifie $nom contient bien ce que tu attends (vérifie que ' n'est pas échappé avec \' par exemple)


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 21-07-2004 à 21:07:34    

A mon avis il est echappé en effet.
Quand j'écho mon bla bla ' bla devient bla bla \' bla

Reply

Marsh Posté le 21-07-2004 à 21:10:45    

Reply

Marsh Posté le 21-07-2004 à 21:11:38    

je test  
if(!preg_match($maregex,stripslashes($nom)) or strlen($nom)<4)
 
....
 
Marche pas... :sweat:

Reply

Marsh Posté le 21-07-2004 à 21:18:00    

Je comprends rien...mais ca marche !
 
 $nom=stripslashes($nom);
 if(!preg_match($maregex,$nom) or strlen($nom)<4)
Ca marche.
 
 if(!preg_match($maregex,stripslashes($nom)) or strlen($nom)<4)
Ca marche pas.
 
Enfin bon,..ca marche !!
Merci beaucoup !!


Message édité par smilm le 21-07-2004 à 21:18:19
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed