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 :

Regex avec des includes et des excludes


Sujet :

Langage PHP

  1. #1
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Points : 12 815
    Points
    12 815
    Par défaut Regex avec des includes et des excludes
    Bonjour à tous et bonne année,

    J'ai un fichier qui contient le texte suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <racine>
    	<ctry>FR</ctry>
    	<ctry>FR</ctry>
    	<ctry>EN</ctry>
    	<foo>lala</foo>
    	<ctry>FR</ctry>
    	<ctry>FR</ctry>
    	<foo>lala</foo>
    	<ctry>FaRa</ctry>
    	<ctry>FR</ctry>
    </racine>
    Je souhaite sélectionner les tags <ctry> dont le contenu n'est pas FR. Dans l'exemple ça doit donc sélectionner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <ctry>EN</ctry>
    <ctry>FaRa</ctry>
    Pour dire que je ne veux pas FR, j'utilise (?!FR), mais comment cumuler ça avec le tag <ctry> ?

    Merci d'avance,
    Th.
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu peux utiliser les outils DOM :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    libxml_use_internal_errors(TRUE);
    $doc = new DOMDocument();
    $doc->loadHTMLFile('tonfichier');
    $xpath = new DOMXpath($doc);
    $elements = $xpath->query('//ctry[. != "FR"]');
    foreach ($elements as $element) {
    	echo $element->nodeValue . '<br/>';
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Points : 12 815
    Points
    12 815
    Par défaut
    Non non, il me faut vraiment une regex... Mais merci pour la proposition.
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

  4. #4
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Points : 12 815
    Points
    12 815
    Par défaut
    En fait (?!FR) permet de sélectionner ce qui n'est pas FR
    (<ctry>)(FR)(</ctry>) sélection quand c'est FR
    Mais je n'arrive pas à demander les deux à la fois.
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

  5. #5
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Salut,

    /<ctry>(?!FR)([^<]+)<\/ctry>/ig
    ?

  6. #6
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    Citation Envoyé par Eric2a Voir le message
    /<ctry>(?!FR)([^<]+)<\/ctry>/ig
    ça a l'air bon si on teste sur ce site :
    https://regex101.com/r/tQ8rZ5/1

  7. #7
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Je dirais, peut-être, comme ça il va mieux ?
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $pattern="/<ctry>(?!\s*FR\s*)[^<]*<\/ctry>/";
    ce qui tient compte au moins partiellement cetaine caractéristique propre au xml, par example les instances facheuses comme ;
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <ctry>
        FR
    </ctry>
    parfois parues ... Et aussi php va se plaindre sur le "modifier" g; puis le "modifier" i, je ne pense pas c'est pertinent a priori pour les cas intérvenant les balises de xml, pourtant certainement parfois souhaîté pour les contenus textuels seulement pour ce cas, mais c'est de l'autre histoire ?

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Citation Envoyé par Eric2a Voir le message
    Salut,

    /<ctry>(?!FR)([^<]+)<\/ctry>/ig
    ?
    Ca ne prends pas "FRA" par exemple
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. Réponses: 0
    Dernier message: 18/12/2011, 14h13
  2. Réponses: 7
    Dernier message: 04/09/2010, 12h51
  3. includes dans des includes
    Par renovati0 dans le forum C
    Réponses: 5
    Dernier message: 17/02/2010, 01h38
  4. Chemin des images lors des includes
    Par swissmade dans le forum Langage
    Réponses: 4
    Dernier message: 07/10/2007, 23h39
  5. Réponses: 3
    Dernier message: 02/10/2006, 21h13

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