Eregi_replace("<a(.*)>", "&qu

jujucool -  
 jujucool -
Bonjour,
Grâce à
$html=eregi_replace("<a(.*)>", "", $html); //$html est de la forme <table><tr><td><a....></a>...
je tente de remplacer la balise "<a border=... toto=....>" par ""
Le problème c'est que dès que la fonction trouve le 1er "<a", elle remplace tous le reste de la chaine par "" vu que mon tableau finit pas "</table>" donc par ">"
Quelqu'un a une idée? :s
Merci d'avance

11 réponses

P@t@ch0n Messages postés 603 Statut Membre 85
 
Oui, les accolades servent de quantificateur.
Et il faut utiliser des délimiteurs dans ton expression d'où l'erreur que tu as.
1
jujucool
 
Je reformule ma question de façon plus claire :
J'ai une chaine :
$str="<p><a .......>XXXXXX</a></p>"

Je veux remplacer "<a .......>" par "" (rien), et je n'arrive pas avec eregi_replace()...
Encore merci d'avance pour votre aide
0
jeangilles Messages postés 816 Date d'inscription   Statut Membre Dernière intervention   186
 
Peut être en mettant :
$html=eregi_replace("<a(.*)</a>", "", $html);
0
jujucool
 
Je n'y avais pas pensé merci
Mais maintenant le problème c'est qu'il s'arête au dernier </a> car en fait c'est un tableau de la forme :
<table>
<tr>
<th>
<a ....>...</a>
</th>
<th>
<a ....> ...</a>
</th>
...

Je voudrais juste qu'il supprime l'intérieur de la balise et non du 1er <a> au dernier </a> trouvé... :(
Merci pour ton aide
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jeangilles Messages postés 816 Date d'inscription   Statut Membre Dernière intervention   186
 
ha oui
ben quelquechose comme ca alors :
$html=eregi_replace("(<a(.*)</a>)?", "", $html);
0
jujucool
 
J'ai toujours le même problème, ça me remplace :

<a ....>...</a>
</th>
<th>
<a ....> ...</gras></a></gras>

au lieu de chaque :

<a ....>...</a>
0
pyschopathe Messages postés 2053 Statut Membre 135
 
Fais plutôt :
$html = eregi_replace( '<a.*?>', '', $html );
ou
$html = eregi_replace( '<a{^>}*>', '', $html );
Les deux reviennent au même et indiquent que tu dois consommer tous les caractères sauf >.
0
jujucool
 
Merci pour ta réponse,
J'ai essayé le 1er mais ça ne marche pas vu qu'il y a "?>" dans l'expression régulière.
J'ai essayé le 2d également, mais ça n'a aucun effet sur ma chaîne...
J'ai un peu de mal à comprendre
0
pyschopathe Messages postés 2053 Statut Membre 135
 
Essaie d'utiliser preg_replace au lieu de ereg_replace... Par contre, je ne crois pas qu'il y ait une version case insensitive, il faudra adapter si ça pose problème.
0
jujucool
 
Oui j'adapterai si cela ne fonctionne pas
Par contre, quand je lance le script, j'ai le message :

Warning: preg_replace() [function.preg-replace]: Unknown modifier '}'

Je n'ai pas trouvé d'équivalent pour cette fonction
0
pyschopathe Messages postés 2053 Statut Membre 135
 
Utilise des crochets à la place des accolades, je me suis pitet planté...
0
jujucool
 
Merci infiniment ça marche! :)

par contre est ce que je pourrais avoir quelques explications sur la syntaxte du premier paramètre stp?

Merci encore et bonne journée
0
pyschopathe Messages postés 2053 Statut Membre 135
 
Tu as choisi la seconde syntaxe ?
Les crochets délimitent un groupe, l'accent circonflexe exprime la négation. Donc tu as un groupe qui regroupe tous les caractères sauf '>'. L'étoile indique une répétition 0 à n fois.

Les accolades permettent de définir une quantité, rien à voir donc avec ce que tu voulais, désolé pour la boulette !
0
jujucool
 
Oui j'ai choisi la seconde.
Merci pour ces explications :)
Elles vont m'être très utiles!
Bonne après-midi
0