Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1344 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Expressions régulières en php.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Expressions régulières en php.

n°1701533
4bis
Posté le 13-03-2008 à 10:11:33  profilanswer
 

Bonjour,
 
Mon problème est assez simple (enfin je pense), mais je n'ai pas réussi à trouver comment faire.
 
J'ai un tableau :  
 
<table>
    <tr>
        <td>Blabla 1</td>
        <td class="monBlabla2">Blabla 2</td>
        <td>Blabla 3</td>
    </tr>
</table>
 
 
J'aimerais, via les expressions régulières et la méthode ereg_replace remplacer la ligne (qui peut être sur plusieurs lignes dans le code) "<td class="monBlabla2">Blabla 2</td>" par rien.  
 
J'ai entre autres essayé ca :
 
$page = ereg_replace("<td class="monBlabla2"(^(td))</td>", "", $page);
 
 
Seulement, il me remplace mon td blabl2 et mon td blabla3 par rien. Comment faire en sorte pour qu'il ne prenne que le td de blabla2 ?
 
Merci d'avance.

mood
Publicité
Posté le 13-03-2008 à 10:11:33  profilanswer
 

n°1701572
soju
One shot !
Posté le 13-03-2008 à 11:05:38  profilanswer
 

- utilise plutôt preg_replace (plus complet, performant...)
- avec un masque du genre #<td class="monBlabla2">.*</td># ça devrait marcher

n°1701573
anapajari
s/travail/glanding on hfr/gs;
Posté le 13-03-2008 à 11:09:39  profilanswer
 

les deux (ereg/preg) sont greedy par défaut.
il faut utiliser un ? dans le .* :o


---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1701593
4bis
Posté le 13-03-2008 à 11:26:17  profilanswer
 

Merci, mais en fait, je me suis trompé dans ma demande exacte désolé :/
 
En fait, mon td est de la forme : <td [plein de choses] class="monBlabla2">blabla2</td>
 
Et je ne vois pas tres bien comment dans le [plein de choses] faire en sorte qu'il n'y ait pas de </td>. Que veut dire le "#" placé tout devant ? En php, ce n'est pas ^ qu'il faut mettre ?
 

n°1701609
anapajari
s/travail/glanding on hfr/gs;
Posté le 13-03-2008 à 11:39:22  profilanswer
 

# est le délimiteur de ta pattern.
Perso j'ecrirais donc ta regex ainsi ( à utiliser dans un preg )

#<td.*class="monBlabla2">.*?</td>#


---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1701669
soju
One shot !
Posté le 13-03-2008 à 13:16:13  profilanswer
 

anapajari a écrit :

il faut utiliser un ? dans le .* :o

ou l'option U
 
EDIT : et vu qu'il y a des retours à la ligne ça marche sans


Message édité par soju le 13-03-2008 à 13:25:20
n°1701677
4bis
Posté le 13-03-2008 à 13:27:59  profilanswer
 

anapajari a écrit :

# est le délimiteur de ta pattern.
Perso j'ecrirais donc ta regex ainsi ( à utiliser dans un preg )

#<td.*class="monBlabla2">.*?</td>#



 
Cela ne fonctionne pas, ca m'enlève tous les td du tableau (ce qui me parait normal), le .* veut dire n'importe quel caractère, donc il va prendre tous les td se trouvant avant le "class="monBlabla2" ?

n°1701681
soju
One shot !
Posté le 13-03-2008 à 13:30:32  profilanswer
 

essaye avec #<td[^>]*class="monBlabla2">.*</td>#U

n°1701682
anapajari
s/travail/glanding on hfr/gs;
Posté le 13-03-2008 à 13:32:04  profilanswer
 

j'ai oublié le ? après le 1er .* :o

#<td.*?class="monBlabla2">.*?</td>#



Message édité par anapajari le 13-03-2008 à 13:32:40

---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1701765
4bis
Posté le 13-03-2008 à 15:02:18  profilanswer
 

Les deux solutions ne fonctionnent pas.
 
Soju >> ca ne trouve aucune expression
anapajari >> la ca enleve les premiers td.

mood
Publicité
Posté le 13-03-2008 à 15:02:18  profilanswer
 

n°1701786
anapajari
s/travail/glanding on hfr/gs;
Posté le 13-03-2008 à 15:13:52  profilanswer
 

4bis> port'nawak :o

Code :
  1. <?php
  2. $a = '<table>
  3.     <tr>
  4.         <td>Blabla 1</td>
  5.         <td class="monBlabla2">Blabla 2</td>
  6.         <td>Blabla 3</td>
  7.     </tr>
  8. </table>
  9. ';
  10. print preg_replace('/<td.*?class="monBlabla2">.*?<\/td>/', '', $a);
  11. ?>


donne

<table>
    <tr>
        <td>Blabla 1</td>
 
        <td>Blabla 3</td>
    </tr>
</table>    



---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1701787
soju
One shot !
Posté le 13-03-2008 à 15:14:24  profilanswer
 

les 2 fonctionnent avec ton exemple...

n°1702301
4bis
Posté le 14-03-2008 à 11:37:39  profilanswer
 

Désolé, ca marche pour cet exemple, mais de mon côté, ca ne fonctionne pas, et je ne vois pas pouruqoi. :(
 

Citation :


<td align="right">&nbsp;&nbsp;<a class="p2" href="http://www.bo.com/outils/alertes/ajout_alerte_cotations.phtml?symbole=1rPGET"><img src="coursget.phtml_fichiers/flechej.gif" alt="Positionner une alerte" border="0" height="11" width="11"> Alerte</a>&nbsp;&nbsp;<a class="p2" id="add_list_link" onclick="open_iframe('/liste/ajout_liste.phtml?symbole=1rPGET', 'iframe_ajout', true, 400, 150, null, findPosX($('add_list_link')) - (400 - $('add_list_link').offsetWidth), findPosY($('add_list_link')) + $('add_list_link').offsetHeight);"><img src="coursget.phtml_fichiers/flechej.gif" alt="Ajouter à ma liste" border="0" height="11" width="11"> Liste</a>&nbsp;&nbsp;<a class="p2" id="add_portefeuille_link" onclick="open_iframe('/portefeuille/ajout_portefeuille_iframe.phtml?symbole=1rPGET', 'iframe_ajout', true, 600, 200, null, findPosX($('add_portefeuille_link')) - (550 - $('add_portefeuille_link').offsetWidth), findPosY($('add_portefeuille_link')) + $('add_portefeuille_link').offsetHeight);"><img src="coursget.phtml_fichiers/flechej.gif" alt="Ajouter à mon portefeuille" border="0" height="11" width="11"> Portef. virtuel</a></td>


 
Voici la ligne que je souhaite supprimer.
 
Et voici mon code :
 

Citation :


$page = preg_replace('/<td.*?ajout_alerte_cotations.*?<\/td>/', '', $page);

n°1702304
anapajari
s/travail/glanding on hfr/gs;
Posté le 14-03-2008 à 11:40:02  profilanswer
 

$page = preg_replace('/<td.*?ajout_alerte_cotations.*?<\/td>/s', '', $page);


Message édité par anapajari le 14-03-2008 à 11:40:37

---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1702337
4bis
Posté le 14-03-2008 à 12:02:08  profilanswer
 

Ca ne fonctionne pas :(
 
Il m'enlève tout la ligne complète, qui comprend un autre td avant :  
 

Citation :


<td align="left"><b><font size="+1">GGG</font></b> / <font size="-1">Euro Paris</font></td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;<span class="p2b">( 100  EUR&nbsp;&nbsp;&nbsp;<span class="vardown">-1.13%</span> )</span></td><td align="right">&nbsp;&nbsp;<a class="p2" href="http://www.bo.com/outils/alertes/ajout_alerte_cotations.phtml?symbole=1rPGET"><img src="coursget.phtml_fichiers/flechej.gif" alt="Positionner une alerte" border="0" height="11" width="11"> Alerte</a>&nbsp;&nbsp;<a class="p2" id="add_list_link" onclick="open_iframe('/liste/ajout_liste.phtml?symbole=1rPGET', 'iframe_ajout', true, 400, 150, null, findPosX($('add_list_link')) - (400 - $('add_list_link').offsetWidth), findPosY($('add_list_link')) + $('add_list_link').offsetHeight);"><img src="coursget.phtml_fichiers/flechej.gif" alt="Ajouter à ma liste" border="0" height="11" width="11"> Liste</a>&nbsp;&nbsp;<a class="p2" id="add_portefeuille_link" onclick="open_iframe('/portefeuille/ajout_portefeuille_iframe.phtml?symbole=1rPGET', 'iframe_ajout', true, 600, 200, null, findPosX($('add_portefeuille_link')) - (550 - $('add_portefeuille_link').offsetWidth), findPosY($('add_portefeuille_link')) + $('add_portefeuille_link').offsetHeight);"><img src="coursget.phtml_fichiers/flechej.gif" alt="Ajouter à mon portefeuille" border="0" height="11" width="11"> Portef. virtuel</a></td>


 
Le "s" corespond à quoi, car sur le net, y'a plein d'exemples qui l'utilisent, mais aucun ne mentionne à quoi ca sert ?

n°1702368
anapajari
s/travail/glanding on hfr/gs;
Posté le 14-03-2008 à 12:21:51  profilanswer
 

http://fr.php.net/manual/fr/refere [...] ifiers.php :  

Citation :

s (PCRE_DOTALL)
    Avec cette option, le méta-caractère point (.) remplace n'importe quel caractère, y compris les nouvelles lignes. Sans cette option, le caractère point ne remplace pas les nouvelles lignes. Cette option est équivalente à l'option Perl /s. Une classe de caractères négative telle que [^a] acceptera toujours les caractères de nouvelles lignes, indépendamment de cette option.



---------------
Software and cathedrals are much the same - first we build them, then we pray.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Expressions régulières en php.

 

Sujets relatifs
URL rewriting et expressions régulièresprobleme expressions regulieres php
besoin d'aide sur expressions régulieresModification dans des tags (expressions régulières)
Tester le format d'une chaine & expressions régulieresProblème avec Expressions régulières preg_match
Extraction de chaînes avec sscanf et des expressions régulièresExpressions Régulières dans une fonction
Expressions régulièresCorrection avec les expressions régulières
Plus de sujets relatifs à : Expressions régulières en php.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR