Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/08/2007, 11h13   #1
Membre du Club
 
Avatar de Beldom
 
Inscription : juillet 2007
Messages : 63
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 63
Points : 56
Points : 56
Envoyer un message via MSN à Beldom
Par défaut Problème de masque

Bonjour

Je souhaite tester la présence d'une chaine qui ressemble à cela :

/*<Texte>*/ if

Ou le nombre d'espace entre le if et la fin du commentaire varie de 0 à n.

J'ai tenté trucs avec ereg et les reg exp, mais je n'arrive pas à obtenir ce qu'il me faut...

J'ai pensé à ca :
Code :
ereg("^[/*<Texte>*/] *if", $var)
Mais ca ne marche pas... Je ne comprend pas comment je dois m'y prendre :S

Merci d'avance de votre aide.
Beldom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2007, 11h32   #2
Fabouney
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Salut,

alors déjà utilise preg_match_all (pour retourner tout les resultat qui vérifi le masque dans la chaine).

pour faire ce que tu doi faire moi je ferais un truc comme:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$chaine = <<< EOF
fkjdskf dsfn jdsfnj dsfj nsdjf ndsjf 
/*   commentaire */
dsfdsfkdsfdsf 
/*<Comment_1>*/   if(tartanpion==1)
{
/*<Comment_2>*/
}
else
}
EOF;
 
$pattern='/\/\*\W+(.+)\W+\*\//i';
if(preg_match_all($pattern, $chaine, $result))
{
	echo '<pre>';
	print_r($result);
	echo '</pre>';
}
?>
resultat:
Citation:
Array
(
[0] => Array
(
[0] => /* <<>>commentaire */
[1] => /**/
[2] => /**/
)

[1] => Array
(
[0] => commentaire
[1] => Comment_1
[2] => Comment_2
)

)

voila dis moi quoi.
Cordialement.
  Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2007, 11h49   #3
Membre du Club
 
Avatar de Beldom
 
Inscription : juillet 2007
Messages : 63
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 63
Points : 56
Points : 56
Envoyer un message via MSN à Beldom
Je ne cherche pas à récupérer les chaines mais bien à tester leur présence dans une autre chaine.
Il s'agit ici du parcours d'un fichier, pour tester la présence de balises entre commentaires..


Et après tests, des lignes sans if sont prises en compte, or si le if est absent, je dois considérer la ligne comme non valide...
Beldom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2007, 11h52   #4
Fabouney
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
et bien dans ce cas prend juste mon pattern, si j'ai reussi à récupérer les commentaire, c'est que je peut savoir qu'il en existe ....
  Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2007, 12h28   #5
Membre chevronné
 
Avatar de Korko Fain
 
Étudiant
Inscription : août 2005
Messages : 632
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2005
Messages : 632
Points : 632
Points : 632
Code :
if( preg_match("#^/\*<Texte>\*/\s*if#", $var) )
Korko Fain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2007, 14h10   #6
Membre du Club
 
Avatar de Beldom
 
Inscription : juillet 2007
Messages : 63
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 63
Points : 56
Points : 56
Envoyer un message via MSN à Beldom
Problème résolu grâve à votre aide.
Merci beaucoup
Beldom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2007, 17h10   #7
Membre du Club
 
Avatar de Beldom
 
Inscription : juillet 2007
Messages : 63
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 63
Points : 56
Points : 56
Envoyer un message via MSN à Beldom
Je rouvre car exactement dans le même type, si j'ai réussis à comprendre pas mal de truc sur comment marchent les regexp, j'ai de nouveau un problème, car si
Code :
preg_match("#^/\*<\w+>\*/\s*if#", $var);
fonctionne, je n'arrive pas à faire passer
Code :
preg_match("#^/\*<\w+>\*/\s*}#", $var);
J'ai essayé en echappant l'accolade ( "\}" ), mais à chaque fois, la regexp ne veut pas la prendre en compte...

Quelqu'un a-t-il une idée parceque là je sèche...
Beldom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2007, 09h17   #8
Membre chevronné
 
Avatar de Korko Fain
 
Étudiant
Inscription : août 2005
Messages : 632
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2005
Messages : 632
Points : 632
Points : 632
Il est nécéssaire de l'échapper oui après, je ne sais pas pourquoi elle te semble ignorée, peut etre que ce n'est pas exactement ce que tu as je ne sais pas donne un peu le code que tu as et celui que tu veux.
Korko Fain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2007, 09h26   #9
Membre du Club
 
Avatar de Beldom
 
Inscription : juillet 2007
Messages : 63
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 63
Points : 56
Points : 56
Envoyer un message via MSN à Beldom
J'ai trouvé une solution de remplacement... Pas forcément parfaite, mais ca ira bien ^^

Merci de votre aide
Beldom est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h33.


 
 
 
 
Partenaires

Hébergement Web