Expressions régulières en php. - PHP - Programmation
Marsh Posté le 13-03-2008 à 11:05:38
- utilise plutôt preg_replace (plus complet, performant...)
- avec un masque du genre #<td class="monBlabla2">.*</td># ça devrait marcher
Marsh Posté le 13-03-2008 à 11:09:39
les deux (ereg/preg) sont greedy par défaut.
il faut utiliser un ? dans le .*
Marsh Posté le 13-03-2008 à 11:26:17
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 ?
Marsh Posté le 13-03-2008 à 11:39:22
# est le délimiteur de ta pattern.
Perso j'ecrirais donc ta regex ainsi ( à utiliser dans un preg )
#<td.*class="monBlabla2">.*?</td># |
Marsh Posté le 13-03-2008 à 13:16:13
anapajari a écrit : il faut utiliser un ? dans le .* |
ou l'option U
EDIT : et vu qu'il y a des retours à la ligne ça marche sans
Marsh Posté le 13-03-2008 à 13:27:59
anapajari a écrit : # est le délimiteur de ta pattern.
|
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" ?
Marsh Posté le 13-03-2008 à 13:32:04
j'ai oublié le ? après le 1er .*
#<td.*?class="monBlabla2">.*?</td># |
Marsh Posté le 13-03-2008 à 15:02:18
Les deux solutions ne fonctionnent pas.
Soju >> ca ne trouve aucune expression
anapajari >> la ca enleve les premiers td.
Marsh Posté le 13-03-2008 à 15:13:52
4bis> port'nawak
Code :
|
donne
<table> |
Marsh Posté le 14-03-2008 à 11:37:39
Désolé, ca marche pour cet exemple, mais de mon côté, ca ne fonctionne pas, et je ne vois pas pouruqoi.
Citation : |
Voici la ligne que je souhaite supprimer.
Et voici mon code :
Citation : |
Marsh Posté le 14-03-2008 à 11:40:02
$page = preg_replace('/<td.*?ajout_alerte_cotations.*?<\/td>/s', '', $page);
Marsh Posté le 14-03-2008 à 12:02:08
Ca ne fonctionne pas
Il m'enlève tout la ligne complète, qui comprend un autre td avant :
Citation : |
Le "s" corespond à quoi, car sur le net, y'a plein d'exemples qui l'utilisent, mais aucun ne mentionne à quoi ca sert ?
Marsh Posté le 14-03-2008 à 12:21:51
http://fr.php.net/manual/fr/refere [...] ifiers.php :
Citation : s (PCRE_DOTALL) |
Marsh Posté le 13-03-2008 à 10:11:33
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.