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
Configuration: Windows XP
Firefox 3.0.10

11 réponses

  1. 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
  2. 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
  3. 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
  4. 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. 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
  7. 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
  8. pyschopathe Messages postés 2053 Statut Membre 137
     
    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
  9. 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
    1. pyschopathe Messages postés 2053 Statut Membre 137
       
      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
  10. 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
    1. pyschopathe Messages postés 2053 Statut Membre 137
       
      Utilise des crochets à la place des accolades, je me suis pitet planté...
      0
  11. 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
    1. pyschopathe Messages postés 2053 Statut Membre 137
       
      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
  12. jujucool
     
    Oui j'ai choisi la seconde.
    Merci pour ces explications :)
    Elles vont m'être très utiles!
    Bonne après-midi
    0