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 :

Retrouver toutes les balises, sauf certaines [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 17
    Par défaut Retrouver toutes les balises, sauf certaines
    Bonjour

    Je souhaite éclater une chaîne en tableau, avec, comme séparateurs, des balises html.
    Mais je veux que php ne prenne pas en compte toutes les balises (pas de balises span, em, strong...)

    Pour l'instant, j'ai ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_split( "/(<[^>]+>)/", $str, -1, PREG_SPLIT_DELIM_CAPTURE );
    Là ma chaîne est éclatée correctement, mais avec toutes les balises.
    Comment faire "tout sauf plusieurs bout de chaines" ? J'ai aussi essayé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_split( "/(<[^(>|em|strong|span)]+>)/", $str, -1, PREG_SPLIT_DELIM_CAPTURE );
    Je patauge. Si quelqu'un peut m'expliquer...
    Merci pour votre aide.

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 293
    Par défaut
    Je dirais que les balises qui t'intéressent sont celles dont le nom ne commence pas par E, ou alors par un E non-suivi d'un M, etc.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_split( "/(<([^ES>]|E[^M]|S[^TP]|ST[^R]|STR[^O]|STRO[^N]|STRON[^G]|SP[^A]|SPA[^N])[^>]+>)/", $str, -1, PREG_SPLIT_DELIM_CAPTURE );
    C'est pas très joli... j'espère qu'il existe une solution plus simple, mais je sèche.

  3. #3
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 293
    Par défaut
    Ah si, avec une assertion avant négative :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_split( "/(<(?!(EM|SPAN|STRONG))[^>]+>)/i", $str, -1, PREG_SPLIT_DELIM_CAPTURE );

  4. #4
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 17
    Par défaut Et pour les balises fermantes ?
    Merci, ça marche bien, mais du coup ça ne me prend en compte que les balises ouvrantes, et plus les balises fermantes.

    J'ai essayé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_split  ( "`((?:</|<)(?!(em|span|strong))[^>]+>)`", $str, -1, PREG_SPLIT_DELIM_CAPTURE );
    Mais ça n'a pas l'air de fonctionner.

    Quelqu'un a une idée ?
    Merci !

  5. #5
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 293
    Par défaut
    Il suffit de rajouter \/? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_split( "/(<\/?(?!(EM|SPAN|STRONG))[^>]+>)/i", $str, -1, PREG_SPLIT_DELIM_CAPTURE );
    ou, plus agréable à la lecture :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_split( "!(</?(?!(EM|SPAN|STRONG))[^>]+>)!i", $str, -1, PREG_SPLIT_DELIM_CAPTURE );

  6. #6
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 17
    Par défaut Marche pas !
    Merci pour la réponses...

    Mais les balises </strong>, </em> et </span> sont considérées comme des séparateurs quand même... ils ne sont pas ignorés...

    Par contre, ceci ignore toutes les balises ouvrantes (normal...) et ignore que les balises fermantes strong, em, span...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "/(<\/(?!(em|span|strong))[^>]+>)/i"
    Je crois que je vais être obligé de parcourir le tableau pour les "recoller" à la chaine...

    Merci

  7. #7
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 293
    Par défaut
    En fait, tu veux ignorer toutes les balises fermantes et seulement certaines balises ouvrantes ?

  8. #8
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 17
    Par défaut Ignorer les balises certaines balises ouvrantes et fermantes
    Salut

    En fait je veux ignorer les balises : <span><strong><em> et </strong></span></em>.

    J'avais pas été claire, désolée.

    Merci pour votre aide.

  9. #9
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 293
    Par défaut
    Citation Envoyé par MademoiselleL Voir le message
    J'avais pas été claire, désolée.
    Si, mais avec les regex, c'est en reformulant le problème différemment qu'on finit par trouver la solution...

    Citation Envoyé par MademoiselleL Voir le message
    Salut

    En fait je veux ignorer les balises : <span><strong><em> et </strong></span></em>.
    Formulé comme ça, c'est nickel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_split( "#(<(?!/?(EM|SPAN|STRONG))[^>]+>)#i", $str, -1, PREG_SPLIT_DELIM_CAPTURE );

  10. #10
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 17
    Par défaut ça marche !
    merci

    ça marche super bien !

    a bientôt

  11. #11
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 293
    Par défaut
    c'était la bonne formulation

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

Discussions similaires

  1. [RegEx] Remplacer toutes les balises HTML sauf un certain type
    Par nicolas2603 dans le forum Langage
    Réponses: 4
    Dernier message: 22/09/2011, 10h06
  2. Récupérer toutes les balises d'un certain type
    Par piotrr dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 08/07/2009, 16h06
  3. Réponses: 1
    Dernier message: 29/11/2005, 01h37
  4. Grant all sur toutes les bases sauf la base mysql
    Par titoff002 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 15/09/2005, 23h18
  5. Réponses: 2
    Dernier message: 18/06/2005, 00h03

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