IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Remplacer des balises à coups de regex [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre averti Avatar de titouille
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    353
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 353
    Points : 356
    Points
    356
    Par défaut Remplacer des balises à coups de regex
    Bonjour Forum !!

    ça fait un petit moment que je cherche sur le net et que je teste des solutions, mais rien ne fonctionne...

    A priori, le problème est simple, mais je suis malheureusement incapable de le résoudre

    J'ai un script XML. Je dois le parcourir (via PEAR::XML_Parser_Simple) pour en récupérer du contenu. Le problème, c'est qu'arrivé à la balise "<dataContent>", le contenu est html, et il m'est donc impossible de le récupérer, car PEAR parse le contenu.

    J'ai donc pensé à remplacer le contenu html par du simili html, simplement remplacer dans le contenu de dataContent tous les caractères < par [ et > par ]

    Bref, je me suis dit qu'à coup de regex, ça devrai bien fonctionner, mais je n'arrive pas à trouver la bonne...

    le contenu html ne contient que des balises <p> et <org>, qui ressemble à une balise a href : <org idsrc="ISIN" value="FR0000xxxxxxx">ORGANISATION</org>

    Et c'est ici que ça coince... j'aimerai remplacer

    <org idsrc="ISIN" value="FR0000xxxxxxx">ORGANISATION</org>

    par

    [org idsrc="ISIN" value="FR0000xxxxxxx"]ORGANISATION[/org]

    malheureusement, mes connaissances en regex sont trop limitées pour arriver à mon but...

    Voici le pattern ou je suis arrivé (non-fonctionnel, bien entendu... ) :

    ^<org.(?)>$



    Si quelqu'un voulait bien se pencher sur mon problème, je lui en serait vraiment reconnaissant.


    Cordialement,


    Thierry

  2. #2
    Membre confirmé Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Points : 594
    Points
    594
    Par défaut
    Essaye en faisant un preg_replace :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_replace("#<org (.*?)>(.*?)<\/org>#mi", "[org $1]$2[/org]", $sujet);
    J'ai pas teste mais ca ne devrait pas etre trop loinde la soluce.

  3. #3
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    Je me permet de reprendre un peu la chaine précédente :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $resultat = preg_replace_all("#<org([^>]*)>([^<]*)<\/org>#Umi", "[org$1]$2[/org]", $sujet);

  4. #4
    Membre confirmé Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Points : 594
    Points
    594
    Par défaut
    tu as eu raison, mais j'ai eu la flemme de retrouver la syntaxe exacte.
    je pense que l'autre dois marcher dans 90% des cas.
    Par contre il ,'existe pas de preg_replace_all.
    Juste un preg_match_all et preg_replace

  5. #5
    Membre averti Avatar de titouille
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    353
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 353
    Points : 356
    Points
    356
    Par défaut
    Merci beaucoup pour votre aide

    via cette page : http://www.rexv.org/

    j'avais trouvé la regex suivante en mode PCRE

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^<org\s((.|\n)+?)>((.|\n)+?)<\/org>
    avec le remplacement mais ça ne fonctionnait pas ensuite avec php...

    Merci encore !

  6. #6
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    Citation Envoyé par stunti
    Par contre il n'existe pas de preg_replace_all.
    Juste un preg_match_all et preg_replace
    Oups, oui en effet ;o)

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Avril 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut doubler les apostrophes pour le javascript
    salut tout le monde

    He je suis a la recherche dune expression reguliere qui permettra de corriger les apostraphes dans une balies precis.

    exemple :
    <a href="#" onclick="AfficherFiche('fr','O'LEARY,MARIE-LISE',event); return false;" autocomplete="off">O'LEARY MARIE-LISE</a>

    j aimerais que quand c est <a href... que ' (apostrophe soit avec \ entre les parantese mais seulement si elle se trouve entre entre apostrophe).

    donc le resultat il faut que ca donne
    <a href="#" onclick="AfficherFiche('fr','O\'LEARY,MARIE-LISE',event); return false;" autocomplete="off">O'LEARY MARIE-LISE</a>

    j ai chercher mais je trouve pas la solution. qqun peut m aider ?

    merci et a bientot

    fred s.

  8. #8
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    2 possibilités :

    * Soit le code que tu cherches a "corriger" est du code généré par un de tes scripts => Dans ce cas là, tu corrige le script d'origine car c'est LUI qui génère cette erreur, donc c'est lui qui doit etre corrigé
    * Soit le code que tu cherches a "corriger" est du code généré par une autre page ou un autre script sur lequel tu n'a pas le controle... et dans ce cas là, si tu veux un bon conseil : change de script.

    Dans tout les cas, pas de regexp a utiliser ici. Il FAUT corriger le script d'origine ou en changer.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. remplacer des balises html d'une variable
    Par onlajoy dans le forum Langage
    Réponses: 4
    Dernier message: 08/02/2012, 14h46
  2. [PHP 5.2] Remplacer des balises html par des balises encodées
    Par gtraxx dans le forum Langage
    Réponses: 3
    Dernier message: 28/01/2009, 21h54
  3. [RegEx] expression régulière pour remplacer des balises
    Par oceanbigone dans le forum Langage
    Réponses: 5
    Dernier message: 29/05/2007, 18h11
  4. Remplacer des balises par des valeurs dans une String
    Par RadicalBob dans le forum Langage
    Réponses: 4
    Dernier message: 26/04/2007, 15h22
  5. [RegEx] Remplacement des accents avec une regex
    Par benohit dans le forum Langage
    Réponses: 7
    Dernier message: 07/09/2006, 18h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo