Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
283 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Expression regulière avec caractères spéciaux

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Expression regulière avec caractères spéciaux

n°2261646
zezette
"Allez hop, au revoir"
Posté le 02-07-2015 à 11:58:39  profilanswer
 

Bonsoir à tous,
 
En php, je veux rechercher toutes les chaines de caractères qui commencent par # et qui finissent pas ;
 
J'ai essayé ceci :  
 
'/^#.*;$/'
 
Mais ça ne marche pas...
 
Une idée ?
 
Merci :)


---------------
"Par moment j'me d'mande si chui pas con" G. de Suresnes
mood
Publicité
Posté le 02-07-2015 à 11:58:39  profilanswer
 

n°2261651
rat de com​bat
attention rongeur méchant!
Posté le 02-07-2015 à 13:38:10  profilanswer
 

Le regex en soi à l'air bon. Peut-être faut rajouter un /g ou /m?
J'ai testé avec un truc en ligne et pour /^#.*;$/gm ça marche:
aaa;
bbb;
#ccc
#ddd; <---match
#eee#
##aaaa;; <---match

 

Ou alors un problème de syntaxe (les '' ?) avec le code autour?

 

edit: C'est bien sûr des '/' et non '\'.


Message édité par rat de combat le 02-07-2015 à 14:03:02
n°2261654
zezette
&#034;Allez hop, au revoir&#034;
Posté le 02-07-2015 à 13:59:36  profilanswer
 

Merci mais c'est de \ pas des / ?
 
Pour mettre le truc dans son contexte, j'ai une variable $var qui contient du texte, et, de temps en temps, quelque chose comme #include machin.php;  
 
L'idée est de retirer ce #include machin.php;
 
Je fais donc  
 
preg_replace('/^#.*;$/gm','',$var);
 
Mais avec le /gm (ou \gm) ça ne marche pas non plus :(


---------------
"Par moment j'me d'mande si chui pas con" G. de Suresnes
n°2261655
rat de com​bat
attention rongeur méchant!
Posté le 02-07-2015 à 14:03:41  profilanswer
 

zezette a écrit :

Merci mais c'est de \ pas des / ?


Pardon, erreur de ma part, j'ai corrigé mon post. :o  

n°2261656
zezette
&#034;Allez hop, au revoir&#034;
Posté le 02-07-2015 à 14:09:35  profilanswer
 

mais ça marche quand même pas :(


---------------
"Par moment j'me d'mande si chui pas con" G. de Suresnes
n°2261657
rat de com​bat
attention rongeur méchant!
Posté le 02-07-2015 à 14:09:36  profilanswer
 

Au pif, j'aurais pas des espaces avant le # ou après le ;? Je ne parle pas PHP mais vu les infos sur le net ton truc à l'air bon...

 

edit: ^\s*#.*;\s*$ ça donne quoi?


Message édité par rat de combat le 02-07-2015 à 14:11:22
n°2261664
zezette
&#034;Allez hop, au revoir&#034;
Posté le 02-07-2015 à 14:34:29  profilanswer
 

Ca ne marche pas non plus :(


---------------
"Par moment j'me d'mande si chui pas con" G. de Suresnes
n°2261667
gilou
Modérateur
Modzilla
Posté le 02-07-2015 à 14:52:37  profilanswer
 

preg_replace("/^#.*;\s*$/m", '', $var);
 

Code :
  1. <?php
  2. $pattern = '/^#.*;\\s*$/m';
  3. $replacement = '';
  4. $subject = '#include machin.php;
  5. et d\'autres trucs
  6. #include truc.php;
  7. blabla';
  8. echo preg_replace($pattern, $replacement, $subject, -1 );
  9. ?>


 
En sortie:  
et d'autres trucs blabla  
 
Testé ici: http://preg_replace.onlinephpfunctions.com/
le modificateur g n'y était pas le bienvenu quand j'ai testé.
 
Faut mettre des doubles quotes si vous passez la regexp directement à la fonction pour interpréter correctement les \s je pense. (je fais pas de PHP, mais c'est le fruit bâtard de l'accouplement de Perl et Apache, donc mon raisonnement a de bonnes chances d'être le bon).
 
A+,


Message édité par gilou le 02-07-2015 à 14:58:10
n°2261669
zezette
&#034;Allez hop, au revoir&#034;
Posté le 02-07-2015 à 14:58:59  profilanswer
 

Merci !!!
 
J'ai rien compris à ton expression régulière, mais ça marche :)


---------------
"Par moment j'me d'mande si chui pas con" G. de Suresnes
n°2261673
gilou
Modérateur
Modzilla
Posté le 02-07-2015 à 15:09:57  profilanswer
 

'/^#.*;\\s*$/m';
 
C'est pareil que "/^#.*;\s*$/m"
^# -> en début de ligne un #
;\s*$ -> en fin de ligne un ; suivi éventuellement de blanc(s)
.* -> entre les deux: des caractères  (d'ailleurs, ici, un + serait mieux qu'une *)
/.../m -> multiligne (si$var contient plus d'une ligne)
 
A+,
 


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --    In umbra igitur pugnabimus. --

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Expression regulière avec caractères spéciaux

 

Sujets relatifs
[Resolu] FileReader et caractères accentuésListe fichier expression régulière
Concaténer deux chaines de caractèresPattern qui exclut les caractères avant un point
[Résolu] Caractères accentués dans formulaire d'envoi de mail.[VBA] Inserer des caractères en décaler dans une cellule
Expression régulière : mot qui n'est pas dans une baliseURL rewinting - expression régulière
Plus de sujets relatifs à : Expression regulière avec caractères spéciaux


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR