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 17/02/2007, 21h44   #1
Nouveau Membre du Club
 
Inscription : avril 2005
Messages : 70
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 70
Points : 25
Points : 25
Par défaut Recherche et Remplacement d'une chaîne dans un fichier

Bonjour.

Je télécharge un fichier sur le net.
Dans ce fichier se trouve des infos que je veux récupérer.

Le problème : les infos se trouvent toutes dans une seule ligne du fichier, extèmement longue.
Je veux récupérer à chaque fois N fois x infos.
Une partie de la ligne qui contient x infos :
Code :
<tr><td class='bodytxt'><span class='orange'><b>1.</b></span> ATLANTA THRASHERS<br /><span class='orange'><b>2.</b></span> OTTAWA SENATORS</td><td class='bodytxt'><input onclick='javascript:top.SelectBetCompetitor(this)' type='checkbox' name='88191041' value="88191041|Win ATLANTA THRASHERS|NHL Saturday 17/2%3Cbr%20/%3EATLANTA THRASHERS at OTTAWA SENATORS<br />Draw Option|3.40|0"/><a class='pricetxt' href="javascript:void(top.AddBetToSlip(88191041,'Win ATLANTA THRASHERS','NHL Saturday 17/2%3Cbr%20/%3EATLANTA THRASHERS at OTTAWA SENATORS&lt;br /&gt;Draw Option', 3.40, '0'))" style='text-decoration:underline;'>3.40</a></td><td class='bodytxt'><input onclick='javascript:top.SelectBetCompetitor(this)' type='checkbox' name='88191051' value="88191051|ATLANTA THRASHERS v. OTTAWA SENATORS DRAW|NHL Saturday 17/2%3Cbr%20/%3EATLANTA THRASHERS at OTTAWA SENATORS<br />Draw Option|4.35|0"/><a class='pricetxt' href="javascript:void(top.AddBetToSlip(88191051,'ATLANTA THRASHERS v. OTTAWA SENATORS DRAW','NHL Saturday 17/2%3Cbr%20/%3EATLANTA THRASHERS at OTTAWA SENATORS&lt;br /&gt;Draw Option', 4.35, '0'))" style='text-decoration:underline;'>4.35</a></td><td class='bodytxt'><input onclick='javascript:top.SelectBetCompetitor(this)' type='checkbox' name='88191061' value="88191061|Win OTTAWA SENATORS|NHL Saturday 17/2%3Cbr%20/%3EATLANTA THRASHERS at OTTAWA SENATORS<br />Draw Option|1.80|0"/><a class='pricetxt' href="javascript:void(top.AddBetToSlip(88191061,'Win OTTAWA SENATORS','NHL Saturday 17/2%3Cbr%20/%3EATLANTA THRASHERS at OTTAWA SENATORS&lt;br /&gt;Draw Option', 1.80, '0'))" style='text-decoration:underline;'>1.80</a></td></tr>
Je pourrais utiliser un preg_match si ceci n'était qu'une seule ligne.
Or je peux avoir 10 fois cela dans une ligne.

J'ai donc penser remplacer tous les <tr> du fichier récupéré par "\n<tr>".

Est-ce à votre avis la meilleure méthode ?

En effet, cela signifie que je dois passer toutes les lignes de mon fichier une première fois pour remplacer et une seconde fois pour rechercher mon pattern.
Y a t-il une fonction qui permet de remplacer toutes les occurences d'une chaîne dans un fichier sans passer ligne par ligne (je sais ma question est idiote) ?

Ne vaudrait-il pas mieux ?
1) Rechercher le pattern
2) Copier la ligne dans un fichier
3) Remplacer <tr> dans ce fichier
4) Rechercher le pattern dans chaque ligne de ce nouveau fichier

Désolé si mes explications sont confuses.
jpascal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2007, 02h50   #2
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Et pourquoi pas utiliser preg_replace ?

Jette un oeil sur ceci : preg_replace() ou preg_replace_callback()
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2007, 08h15   #3
Membre éprouvé
 
Avatar de goodpz
 
Inscription : février 2007
Messages : 475
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 475
Points : 474
Points : 474
Pourquoi pas preg_match_all() tout simplement ?
goodpz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2007, 12h25   #4
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
J'y ai pensé mais il dit qu'il souhaite remplacer les éléments et c'est preg_replace qui correspond le plus à sa demande. Mais il peut quand même le faire avec preg_match_all, et le traitement sera certainement plus long
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2007, 18h49   #5
Membre éprouvé
 
Avatar de goodpz
 
Inscription : février 2007
Messages : 475
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 475
Points : 474
Points : 474
Citation:
Envoyé par Kerod
J'y ai pensé mais il dit qu'il souhaite remplacer les éléments et c'est preg_replace qui correspond le plus à sa demande. Mais il peut quand même le faire avec preg_match_all, et le traitement sera certainement plus long
Au début de son message, jpascal dit qu'il souhaite récupérer des info dans la chaîne. Remplacer des occurrences n'est qu'une solution de secour (apparemment)
goodpz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2007, 19h35   #6
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Si tu te bases sur le titre du sujet et le fonctionnement voulu tu remarqueras que c'est exactement ce qu'il souhaite avoir. La solution de récupération du début est là certainement parce qu'il ne savait pas qu'il existait un fonction qui permettait de remplacer directement.
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h17.


 
 
 
 
Partenaires

Hébergement Web