[Résolu] preg_replace et preg_match_all dans les choux

preg_replace et preg_match_all dans les choux [Résolu] - PHP - Programmation

Marsh Posté le 29-07-2010 à 20:19:19    

Salut.
 
Hier j'ai déjà bloqué 2h sur le même problème, dont la solution se révélait être un banal accident d'espaces et de tabulations non conformes entre la patterne et la cible.
 
Aujourd'hui rebelotte, mais là c'est du sérieux  :o  
 
Les deux versions du code remanié ci-dessous ont pour objectif de ne prendre qu'une partie d'un contenu posté via un formulaire, qui contient à 95% les mêmes infos à chaque fois (ne cherchez pas).
La 1ère méthode choppe le contenu en entier et supprime ce qu'il y a avant et après en trop, et la 2e méthode ne prend que ce qui est entre les deux.
 
1er ESSAI :

Citation :

// On nettoie le code de turobolister
 $pattern1 = '#<TABLE CELLSPACING="28" CELLPADDING="0" WIDTH="100%"><TR><TD VALIGN="top"><DIV align=center>
<P><IMG src="http://www.****.com/img/blank1.gif"><BR><IMG src="http://www.****.com/img/logo****.gif"> </P>
<P><IMG src="http://www.****.com/img/blank2.gif"><BR></P></DIV>#';
 $pattern2 = '#<P>&nbsp;</P>
<DIV align=center>
<DIV align=center><FONT face=Georgia size=4><FONT size=4>
<DIV align=center></DIV></FONT></FONT></DIV></DIV></DIV></TD></TR></TBODY></TABLE>
<P>&nbsp;</P>
<P align=center><FONT face=Georgia>Pensez à visiter <A href="http://stores.shop.ebay.fr/****" target=_blank><B>nos autres objets en vente</B></A></FONT> <FONT face=Georgia>!</FONT><BR><BR><FONT face=Georgia>Ajoutez-nous à <A href="http://my.ebay.fr/ws/eBayISAPI.dll?AcceptSavedSeller&amp;mode=0&amp;preference=0&amp;sellerid=****&amp;ru=http%3A//cgi.ebay.fr/ws/eBayISAPI.dll?ViewItem&amp;item=110159416135&amp;ssPageName=STRK:MEFS:ADDVI" target=_blank><B>vos vendeurs favoris </B></A></FONT><FONT face=Georgia>!</FONT></P>
<P align=center><IMG src="http://www.****.com/img/blank3.gif"></P>
<P align=center><IMG src="http://www.****.com/img/powerseller-platine.jpg"></P>
</TD></TR><TR><TD VALIGN="top" ALIGN="center"></TD></TR></TABLE>#';
 $turbolister = preg_replace($pattern1, "", $turbolister);
 $turbolister = preg_replace($pattern2, "", $turbolister);


 
2e ESSAI :

Citation :

// On prend la partie nécessaire dans le code de turobolister
 $start = '<P><IMG src="http://www.****.com/img/blank2.gif"><BR></P></DIV>';
 $end = '<P>&nbsp;</P>
<DIV align=center>';
 $pattern = '#' . $start . '(.)' . $end . '#sU';
 preg_match_all($pattern, $turbolister, $match, PREG_SET_ORDER);
 $turbolister = $match[1];


 
Voilà, ces deux manières foirent.
 
Autant le 2e essai comporte une parenthèse capturante et j'ai donc moyen de me planter, autant le 1er essai est simple, la $pattern1 est bien supprimée, mais pas la 2e.
 
 
VÉRIFICATIONS DÉJA EFFECTUÉES :
- la $pattern est adéquate.
- il n'y a bien qu'une fois la $pattern dans le fichier escompté (donc pas de risque de confusion qui laisserait le code pantois).


Message édité par Gluonk le 29-07-2010 à 22:43:07

---------------
Feedback | Zappateers Radio [Bully's Streams] (http://zappateers.oblivion-software:8000)
Reply

Marsh Posté le 29-07-2010 à 20:19:19   

Reply

Marsh Posté le 29-07-2010 à 22:42:50    

Résolu en nettoyant les $pattern de la méthode n°1 avec preg_quote().
 
Apparemment des caractères de la 2e $pattern posaient problème.


---------------
Feedback | Zappateers Radio [Bully's Streams] (http://zappateers.oblivion-software:8000)
Reply

Sujets relatifs:

Leave a Replay

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