[PHP] expressions regulières
Résolu
jjvmaster
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
jjvmaster Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
jjvmaster Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Malgré des nombreuses recherches sur Google et sur le Forum CCM je n'arrive toujours pas a me depatouiller des ces expressions regulieres.
Mon probleme est le suivant:
Je dispose d'un fichier texte qui est de cette forme :
Conducteur VALJEAN JEAN N° de matricule:0315092999
04/2006 Début Fin Amp Cond. Trav. Att. Doub. Repos Serv. T.E. Km Vt Nuit
Dim 2 22:01 24:00 1,99 1,92 0,08 1,99 1,99
Conducteur SUFFIT SAM N° de matricule : 033111111
Détail par Semaine - Découpage jour calendaire -
04/2006 Début Fin Amp Cond. Trav. Att. Doub. Repos Serv. T.E. Km Vt Nuit
Sam 1 0:36 5:12 4,61 3,73 0,62 0,22 0,05 4,56 4,56
( J'ai bien sur tronqué la majorité des informations et le fichier en lui même comporte un grand nombre de conducteurs.)
Mon but étant de récuperer le nom et le prenom de chaque Conducteur et de l'afficher dans une liste.
J'ai donc décidé d'utiliser les expressions regulieres mais malgré tout mes efforts mon code ne fonctionne pas:
<?
$fp = fopen("*****.txt","r");
while (!feof($fp))
{
$page .= fgets($fp,4096);
}
$chaine = eregi("Conducteur(.*) N°",$page,$res);
// je suis sur que c'est ici qu'est le probleme
for($i=0;$i<1000;$i++)
{
print($res[$i]);
print("<br>");
}
fclose($fp);
?>
Le probleme vient de la fonction eregi que j'ai du mal à manipuler.
Apparement l'élément "Conducteur(.*) N°" n'est pas bon. Pourtant la synthaxe me parait bonne (J'isole ce qui se trouve entre Conducteur et N° et je le rentre dans l' Array $res; je sais aussi que je devrais faire un for pour que chaque conducteur trouvé sois mis dans une case differente de l'Array mais vu que la premiere occurence ne marche pas je l'ai supprimé)
Ce que cela m'affiche:
En fait la fonction eregi rentre dans la premiere case de l'Array ce qui se trouve entre le Premier "Conducteur" et le Dernier "N°" du fichier texte ( J'ai donc 99% du fichier texte dans la premiere case du tableau et donc aucune liste ) , plutot que le "N°" qui se trouve juste apres.
Voila j'espere avoir exposé mon probleme correctement,
Merci aux futurs réponses et/ou aides.
Malgré des nombreuses recherches sur Google et sur le Forum CCM je n'arrive toujours pas a me depatouiller des ces expressions regulieres.
Mon probleme est le suivant:
Je dispose d'un fichier texte qui est de cette forme :
Conducteur VALJEAN JEAN N° de matricule:0315092999
04/2006 Début Fin Amp Cond. Trav. Att. Doub. Repos Serv. T.E. Km Vt Nuit
Dim 2 22:01 24:00 1,99 1,92 0,08 1,99 1,99
Conducteur SUFFIT SAM N° de matricule : 033111111
Détail par Semaine - Découpage jour calendaire -
04/2006 Début Fin Amp Cond. Trav. Att. Doub. Repos Serv. T.E. Km Vt Nuit
Sam 1 0:36 5:12 4,61 3,73 0,62 0,22 0,05 4,56 4,56
( J'ai bien sur tronqué la majorité des informations et le fichier en lui même comporte un grand nombre de conducteurs.)
Mon but étant de récuperer le nom et le prenom de chaque Conducteur et de l'afficher dans une liste.
J'ai donc décidé d'utiliser les expressions regulieres mais malgré tout mes efforts mon code ne fonctionne pas:
<?
$fp = fopen("*****.txt","r");
while (!feof($fp))
{
$page .= fgets($fp,4096);
}
$chaine = eregi("Conducteur(.*) N°",$page,$res);
// je suis sur que c'est ici qu'est le probleme
for($i=0;$i<1000;$i++)
{
print($res[$i]);
print("<br>");
}
fclose($fp);
?>
Le probleme vient de la fonction eregi que j'ai du mal à manipuler.
Apparement l'élément "Conducteur(.*) N°" n'est pas bon. Pourtant la synthaxe me parait bonne (J'isole ce qui se trouve entre Conducteur et N° et je le rentre dans l' Array $res; je sais aussi que je devrais faire un for pour que chaque conducteur trouvé sois mis dans une case differente de l'Array mais vu que la premiere occurence ne marche pas je l'ai supprimé)
Ce que cela m'affiche:
En fait la fonction eregi rentre dans la premiere case de l'Array ce qui se trouve entre le Premier "Conducteur" et le Dernier "N°" du fichier texte ( J'ai donc 99% du fichier texte dans la premiere case du tableau et donc aucune liste ) , plutot que le "N°" qui se trouve juste apres.
Voila j'espere avoir exposé mon probleme correctement,
Merci aux futurs réponses et/ou aides.
A voir également:
- [PHP] expressions regulières
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Retour a la ligne php - Forum Webmastering
- Alert php - Forum PHP
- [PHP] Expressions régulières - Forum PHP
3 réponses
//attention, ne marche que si le caractère "°"
//n'est présent que dans "N° de matricule"
preg_match_all("/Conducteur([^°]*)[N]/",$page,$res);
print_r($res[1]);
//n'est présent que dans "N° de matricule"
preg_match_all("/Conducteur([^°]*)[N]/",$page,$res);
print_r($res[1]);
Ah en effet, je ne l'avais pas vu sous cette angle. Je m'etais inspiré du cours PHP de CCM avec l'exemple pour isoler une chaine :
$titre = eregi("<title>(.*)</title>",$page,$regs); //on isole le titre
/* Le titre commence par <title>,
puis contient n'importe quelle chaîne,
et se termine par </title> */
Apparement j'avais mal compris..
En tout cas mille fois merci !! T_T T_T ( larmes de joie )
$titre = eregi("<title>(.*)</title>",$page,$regs); //on isole le titre
/* Le titre commence par <title>,
puis contient n'importe quelle chaîne,
et se termine par </title> */
Apparement j'avais mal compris..
En tout cas mille fois merci !! T_T T_T ( larmes de joie )