Page 1 sur 1
probleme regexp
Posté : 04 janv. 2009, 00:42
par x-ben
Salut
voici mon ptit prob:
j'ouvre un fichier texte puis je lis ligne à ligne pour trouver celles qui se termine par
gh
Code : Tout sélectionner
while ($ligne=fgets($fp))
{
if (preg_match("gh$", $ligne))
echo "<br>:".$ligne;
}
ainsi j'utilise la regexp
Mais ça ne marche pas. par contre si je vire le dollar ça me trouve bien les lignes comportant
gh mais avec le $ plus rien
auriez-vous une idée svp?
Posté : 04 janv. 2009, 01:17
par blof
Bonsoir,
le motif de ton expression régulière doit être encadré par des délimiteurs.
Par exemple :
preg_match("/gh$/", $ligne)
[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]
Posté : 04 janv. 2009, 01:35
par x-ben
salut.
je me suis trompé en postant.
je tentais à l'origine d'utiliser ereg:
Code : Tout sélectionner
while ($ligne=fgets($fp))
{
if (ereg("gh$", $ligne))
echo "<br>:".$ligne;
}
et là ça ne fonctionne pas.
en revanche tu as raison, ta correction fonctionne.
cela dit je n'y arrive pas avec ereg
Posté : 04 janv. 2009, 01:54
par blof
On ne devrait plus utiliser les fonctions POSIX ( ereg(), ereg_replace() ... )
(
http://lumadis.be/regex/tuto_pcre.php )
Mais ça ne répond pas à ta question.
Il n'y a aucune raison que ça fonctionne avec un preg_match() et pas avec un ereg().
Tu confirmes que ça fonctionne avec un preg_match() et pas avec un ereg() ?
Posté : 04 janv. 2009, 01:58
par x-ben
je peux te confirmer que
ça marche
mais que
ça marche pas
je viens de tester
-edit-
(sans delimiteurs) marche pas non plus
Posté : 04 janv. 2009, 02:01
par blof
avec ereg() il ne faut pas de délimiteurs.
Posté : 04 janv. 2009, 02:02
par x-ben
j'ai édité en mème temps que ton post

Posté : 04 janv. 2009, 02:15
par blof
if (ereg(" [0-9]*$", $ligne) !== FALSE)
( peut-être )
Mais on perd son temps avec une fonction qui ne devrait plus être utilisée ...
Posté : 04 janv. 2009, 02:19
par x-ben
non le != false ne sert à rien (d'autre requetes à base de ereg fonctionnent sans ça). c'est juste le $ qui me pose problème.
Mais en effet on perd son temps vue que ça marche mieux avec preg_match
Je te remercie pour le lien très interessant.
A+
Posté : 05 janv. 2009, 20:08
par AB
Mais en effet on perd son temps vue que ça marche mieux avec preg_match
A+
Oui, c'est bien un exemple où y'a pas photo : ne pas utiliser POSIX mais utiliser PCRE pour tout traitement php, vu la différence de performance y'a pas débat.
Pour un usage courant, il n'y a que pour mysql et REGEXP qu'il est utile de se souvenir de la syntaxe POSIX
Sinon le topic est résolu ? Si oui y'a un bouton pour ça

Posté : 11 janv. 2009, 00:59
par x-ben
Sinon le topic est résolu ? Si oui y'a un bouton pour ça

c'est fait.
merci encore aux intervenants
