besoin d'aide sur expressions régulieres

besoin d'aide sur expressions régulieres - PHP - Programmation

Marsh Posté le 29-06-2007 à 11:00:26    

bonjour à tous,
 
j'ai besoin d'aide pour les expressions régulieres, c quelquechose que je ne maitrise pas du tout et je cherche une solution rapide et efficace pour parser un fichier et supprimer/remplacer des blocs entiers de contenu.
 
 
en gros dans mon bloc de texte j'ai des blocs qui ressemblent à ça :
 


<h2>Une tentative de paiement à été effectuée le 09-05-2007 à 00:08:41</h2><br /><strong>Réponse serveur :</strong> Paiement validé (code-retour : paiement)<br /><strong>Référence :</strong> BOAU1178662067<br /><strong>Montant :</strong> 20EUR<br /><br /><br />La base de donnée a bien été mise à jour<br /><br /><br /><br />Array<br />
(<br />
    [co_id] => 62849<br />
    [co_champ1] => BOAU1178662067<br />
    [co_champ2] => Melle<br />
    [co_champ3] => Martine<br />
    [co_champ4] => Dupont<br />
    [co_champ5] => 1 rue de la chausée<br />
    [co_champ6] => 77145<br />
    [co_champ7] => Trifouille les oies<br />
    [co_champ8] => martine.dupont@monmail.com<br />
    [co_champ9] => 06.66.44.55.66<br />
    [co_champ10] => cb<br />
    [co_champ11] => Paiement validé<br />
    [co_champ12] => non<br />
    [co_champ13] => 09-05-2007 à 00:08:41<br />
    [co_champ14] => <br />
    [co_champ15] => <br />
    [co_champ16] => <br />
    [co_champ17] => <br />
    [co_champ18] => <br />
    [co_champ19] => <br />
    [co_champ20] => <br />
    [co_grdtexte1] => <br />
    [co_grdtexte2] => <br />
    [co_grdtexte3] => <br />
    [co_numint1] => 6<br />
    [co_numint2] => <br />
    [co_numint3] => <br />
    [co_numint4] => <br />
    [co_numint5] => <br />
    [co_numdbl1] => 20<br />
    [co_numdbl2] => <br />
    [co_date1] => 2007-05-09<br />
    [co_date2] => 2007-05-09<br />
    [co_datecrea] => 2007-05-09<br />
)<br />
 


 
en cherchant un peu et en utilisant une extension firefox pour m'aider j'ai trouvé cette regex là : <h2>.*(\n.*){36}
 
 
sur firefox ça marche... mais en PHP ça mouline et ça ne retourne rien :
 

Code :
  1. $filename="_test_2007_05_09.htm";
  2. $str=file_get_contents ( $filename,  filesize($filename) );
  3. $str=ereg_replace("<h2>.*(\n.*){36}","",$str);


 
HELP ME PLEASE !!!
 
freed


Message édité par freed102 le 29-06-2007 à 11:01:53
Reply

Marsh Posté le 29-06-2007 à 11:00:26   

Reply

Marsh Posté le 29-06-2007 à 11:02:16    

Tu veux remplacer quoi aussi?
 
Sinon tu as ce site : http://www.expreg.com/


---------------
"Nous avons tous nos machines du temps. Celles qui nous ramènent en arrière sont les souvenirs, celles qui nous projettent en avant sont les rêves."
Reply

Marsh Posté le 29-06-2007 à 11:11:47    

je veux rechercher tout ce qui ressemble au  bloc ci dessus par rien dans mon texte ! je veux les supprimer !  
 
PS : c sur ce site que j'ai pris mes "conseils", j'ai passé ma soirée à lire leurs articles.

Reply

Marsh Posté le 29-06-2007 à 11:24:02    

Si le bloc se trouve toujours à la même ligne, tu peux te baser sur le numéro. C'est pas très fiable mais c'est ce qu'il y a de plus simple et de plus rapide.
 


---------------
"Nous avons tous nos machines du temps. Celles qui nous ramènent en arrière sont les souvenirs, celles qui nous projettent en avant sont les rêves."
Reply

Marsh Posté le 29-06-2007 à 11:28:13    

non justement ya des retour chariot partout et le contenu du bloc varie mais est toujours formaté de la même façon

Reply

Marsh Posté le 29-06-2007 à 11:41:59    

Je pense qu'il faudrais que tu mettes toutes tes lignes sur une seule ligne afin de retrouver la chaine "<h2>....)<br />".
Je ne vois pas d'autre moyen. Tu peux toujours rajouter dans ta règle les chaines de caractères statique. Ta recherche sera d'autant plus efficace et surtout plus sûr.


---------------
"Nous avons tous nos machines du temps. Celles qui nous ramènent en arrière sont les souvenirs, celles qui nous projettent en avant sont les rêves."
Reply

Marsh Posté le 29-06-2007 à 11:54:03    

j'ai viré les \n ... mais j'ai pas le bon resultat
 
 

Code :
  1. $filename="_test_cmic_sortie_2007_05_09.htm";
  2. $str=file_get_contents ( $filename,  filesize($filename) );
  3. $str=str_replace("\n","",$str);
  4. $str=str_replace("\r","",$str);
  5. $str=preg_replace("#<h2>.*\)#","",$str);


 
me retourne  
 
<br /


Message édité par freed102 le 29-06-2007 à 11:55:01
Reply

Marsh Posté le 29-06-2007 à 12:04:07    

en fait j'aimerai qu'il me supprime tout ce qui commence par <h2> jusqu'au prochain <h3> .. le problem c'est qu'il me supprime tout jusqu'à la fin en me laissant que le dernier bloc qui commence par <h3> ... j'ai du rater un épisode :
 
$str=ereg_replace("<h2>Une.*<h3>","",$str);

Reply

Marsh Posté le 29-06-2007 à 12:20:25    

utilise PCRE, plus puissant/performant
 

Code :
  1. $str=preg_replace('#<h2>.*<h3>#Uis','<h3>',$str);

(non testé)

Reply

Marsh Posté le 29-06-2007 à 12:22:33    

whaou ! p'tain ! du premier coup ! bravo !
 
cepandant il m'a laissé le dernier bloc... je ne sais pas pourquoi ! mais bon ça c pas tres grave !

Reply

Marsh Posté le 29-06-2007 à 12:22:33   

Reply

Marsh Posté le 29-06-2007 à 12:26:44    

freed102 a écrit :

cepandant il m'a laissé le dernier bloc... je ne sais pas pourquoi ! mais bon ça c pas tres grave !

si il n'y a pas de <h3> après le dernier bloc, normal.
je te laisse réfléchir à une autre regexp

Reply

Marsh Posté le 29-06-2007 à 12:33:56    

en tous cas merci beaucoup ça m'a vraiment aidé !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed