Expression regulieres en php
toujours_inquiete
Messages postés
47
Statut
Membre
-
toujours_inquiete Messages postés 47 Statut Membre -
toujours_inquiete Messages postés 47 Statut Membre -
Bonjour,
y a t il quelqu'un éveillé?
bon je rencontre un problème je débute avec les expression régulières en php
je sais écrire une expression régulière mais je sais pas trouver mon erreur
pouvez vous m'aider
je veux chercher toute les dates dans un fichier
voici mon code php
$ary=array();
$tab=file($F);
$lf=count($tab);
$ij=0;$data="";
while($ij<$lf){
$data=$tab[$ij];
echo $data;
$ex=".*([1-31]/-.[1-12]/-.[1900-2100]).*";
eregi($ex, $data, $ary);
echo $ary[1];
$ij++;
}
et voici le contenu de mon fichier exemple
Baraa
ESSTT
ECOLE
YAHOOO
date 12/09/2009 no 14-07-2008
et l'erreur est Warning: eregi() [function.eregi]: REG_ERANGE in C:\wamp\www\archives\test.php on line 15
Notice: Undefined offset: 1 in C:\wamp\www\archives\test.php on line 16
au nombre des ligne de fichier je n'est aucune idée pour corriger mon erreur
merci beacoup pour votre aide et bonne nuit
y a t il quelqu'un éveillé?
bon je rencontre un problème je débute avec les expression régulières en php
je sais écrire une expression régulière mais je sais pas trouver mon erreur
pouvez vous m'aider
je veux chercher toute les dates dans un fichier
voici mon code php
$ary=array();
$tab=file($F);
$lf=count($tab);
$ij=0;$data="";
while($ij<$lf){
$data=$tab[$ij];
echo $data;
$ex=".*([1-31]/-.[1-12]/-.[1900-2100]).*";
eregi($ex, $data, $ary);
echo $ary[1];
$ij++;
}
et voici le contenu de mon fichier exemple
Baraa
ESSTT
ECOLE
YAHOOO
date 12/09/2009 no 14-07-2008
et l'erreur est Warning: eregi() [function.eregi]: REG_ERANGE in C:\wamp\www\archives\test.php on line 15
Notice: Undefined offset: 1 in C:\wamp\www\archives\test.php on line 16
au nombre des ligne de fichier je n'est aucune idée pour corriger mon erreur
merci beacoup pour votre aide et bonne nuit
A voir également:
- Expression regulieres en php
- Easy php - Télécharger - Divers Web & Internet
- Expression écrite cm1 cm2 télécharger gratuit - Télécharger - Éducatifs
- Microsoft expression encoder - Télécharger - Divers Utilitaires
- Expert php pinterest - Télécharger - Langages
- Php alert ✓ - Forum PHP
9 réponses
Salut !
moi je n'utilise pas ereg, mais preg ... me semble que c'est un peu plus rapide.
pour ton expression, elle est déjà pas bonne ...
il ne faut pas mettre le .* au début et à la fin, on s'en fous, il recherche dans le texte ...
pour les nombres, le 1-12 n'est pas correct par exemple.
en fait, il faut lui mettre entre [ ] les caractères autorisés (pas une valeur numérique), ce qui donne : [0-9].
Ensuite, il faut préciser combien de caractèr du souhaite [0-9]{1,2} (1 ou 2 pour le mois)
Tu veux aussi pouvoir séparer par / - .hors, le tiret et le . ont des sinifications précises ...
en gros, au final, ça donnerai :
donc, a placer avec un preg par exemple :
en même temps, tu pourrait utiliser une seule variable texte pour tout le fichier (plutot que d'en faire un tableau)
et utiliser ensuite un preg_match_all pour trouver toutes les dates du fichier.
Ceci remplace tout ton code :
ATTENTION : j'ai rajouté un espace dans les [ ] pour les séparateur, pour que le forum les affiche bien ... si tu les laisse, tu pourra aussi récupérer les dates séparées par des espace.
moi je n'utilise pas ereg, mais preg ... me semble que c'est un peu plus rapide.
pour ton expression, elle est déjà pas bonne ...
il ne faut pas mettre le .* au début et à la fin, on s'en fous, il recherche dans le texte ...
pour les nombres, le 1-12 n'est pas correct par exemple.
en fait, il faut lui mettre entre [ ] les caractères autorisés (pas une valeur numérique), ce qui donne : [0-9].
Ensuite, il faut préciser combien de caractèr du souhaite [0-9]{1,2} (1 ou 2 pour le mois)
Tu veux aussi pouvoir séparer par / - .hors, le tiret et le . ont des sinifications précises ...
en gros, au final, ça donnerai :
([0-9]{1,2}[ /\.-][0-9]{1,2}[ /\.-][0-9]{4})
donc, a placer avec un preg par exemple :
if( preg_match( "#([0-9]{1,2}[ /\.-][0-9]{1,2}[ /\.-][0-9]{4})#", $data, $ary ) )
{
echo $ary[1] ;
}
$ij++;
en même temps, tu pourrait utiliser une seule variable texte pour tout le fichier (plutot que d'en faire un tableau)
et utiliser ensuite un preg_match_all pour trouver toutes les dates du fichier.
Ceci remplace tout ton code :
data = file_get_contents($F);
if( preg_match_all( "#([0-9]{1,2}[ /\.-][0-9]{1,2}[ /\.-][0-9]{4})#", $data, $ary ) )
{
foreach( $ary[1] as $v )
echo $v ;
}
ATTENTION : j'ai rajouté un espace dans les [ ] pour les séparateur, pour que le forum les affiche bien ... si tu les laisse, tu pourra aussi récupérer les dates séparées par des espace.
bonjour imw je suis désolée mais ça ne m'affiche plus d'erreur mais ça n'affiche aucun résultat il ne retrouve pas les dates
c'est quoi les erreurs ?
j'ai oublé le $ devant data à la première ligne ...
pour le reste ça devrai être bon ...
j'ai oublé le $ devant data à la première ligne ...
pour le reste ça devrai être bon ...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'ai fait un essai avec ton exemple de texte et la dernière regex énoncée, et ça fonctionne très bien.
Ton fichier est-il bien chargé ?
teste un echo $data
les années des dates ont toujours 4 chiffres ? sinon, faut mettre un {2,4} à la fin à la place du {4}
$data = "Baraa
ESSTT
ECOLE
YAHOOO
date 12/09/2009 no 14-07-2008";
if( preg_match_all( "#([0-9]{1,2}[ /\.-][0-9]{1,2}[ /\.-][0-9]{4})#", $data, $ary ) )
{
foreach( $ary[1] as $v )
echo $v ;
}
Ton fichier est-il bien chargé ?
teste un echo $data
les années des dates ont toujours 4 chiffres ? sinon, faut mettre un {2,4} à la fin à la place du {4}
désolé je sais que c'est trop lourd de ma part mais ça ne marche pas
voila encore mon code
<?php
//include "connexion.php";
//rechercher dans le fichier
$F="base/bb.txt";
$inF = fopen($F,"r");
$ary=array();
$data = "Baraa
ESSTT
ECOLE
YAHOOO
date 12/09/2009 no 14-07-2008";
if( preg_match( "#([0-9]{1,2}/\.-[0-9]{1,2}/\.-[0-9]{2,4})#", $data, $ary ) )
{
foreach( $ary[1] as $v )
echo "v=".$v ;
}
fclose($inF);
//fin recherche
merci beaucoup
voila encore mon code
<?php
//include "connexion.php";
//rechercher dans le fichier
$F="base/bb.txt";
$inF = fopen($F,"r");
$ary=array();
$data = "Baraa
ESSTT
ECOLE
YAHOOO
date 12/09/2009 no 14-07-2008";
if( preg_match( "#([0-9]{1,2}/\.-[0-9]{1,2}/\.-[0-9]{2,4})#", $data, $ary ) )
{
foreach( $ary[1] as $v )
echo "v=".$v ;
}
fclose($inF);
//fin recherche
merci beaucoup