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 et css


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Septembre 2017
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Septembre 2017
    Messages : 25
    Par défaut regex et css
    Bonjour,

    Je ne suis pas familier avec le regex. Voici ma problématique, peut être pourrez vous m'aider. Je dois sélectionner une partie d'un texte. J'ai pensé baliser le début et la fin de ce texte à sélectionner par deux balises :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    preg_match('#debut(.+)fin#isU', $texte-complet, $resultat);
     
     
     
    			$texte-selection=$resultat[1];



    Dans le texte complet (que je récupère de la variable $texte-complet ci dessus) j'ai la séquence :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    texte.....<div class="resume-glossaire-debut"></div>Texte à sélectionner<div class="resume-glossaire-fin"></div>texte...
    L'idée est de récupérer ma sélection dans la variable $texte-selection


    J'ai prolongé ce code par du CSS :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    .resume-glossaire-debut :after {
     
    content:"debut";
     
    	}
    .resume-glossaire-fin :after {
     
    content:"fin";
    	}
    Je n'obtiens pas exactement ce que je veux à un pouillem près :

    ">texte à sélectionner au lieu de texte à sélectionner

    Ce "> existe dans le texte, c'est le "> de la première div... et bien sur j'aimerais le supprimer.



    Je ne peux pas faire porter le regex sur les balises directement (wordpress et plugin), c'est lié au fait que les balises sont remplacées par des choses du type : '&lt;strong&gt; (lorsque j'affiche le code source de la page). Tout est ok avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match('#&lt;br /&gt;&lt;span class=&quot;resume-glossaire&quot;&gt;(.+)&lt;/span&gt;#isU', $glossaryItemContent, $resultat);
    mais j'aimerais que ce soit plus propre....

    Merci de votre aide et de manière plus générale est-ce la bonne méthode ?

  2. #2
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    Ce qu'il y a de bien avec Wordpress, c'est qu'on s'en lasse pas.

    Si tu arrives à appliquer des règles css sur ton contenu, c'est bien que ce contenu doit se trouver quelque part sous forme html (plutôt que sous la forme affichable où les < et > sont remplacés par des entités html). Donc je me demande pourquoi tu veux absolument travailler sur la forme affichable et pas sur la forme html ce qui ouvrirait d'autres perspectives que les regex (puisque tu parles de propreté) comme le DOM.

    Admettons que tu sois obligé de procéder comme tu l'envisages: pourquoi ne pas choisir d'autres balises que debut et fin qui sont des noms communs que tu peux aussi bien retrouver dans ton contenu que dans les attributs html. Je sais pas moi, appelle les Zorglub et Mouffette ou utilise n'importe quelle suite de signes cabalistiques qui ne risquent pas de prêter à confusion.

    Maintenant, si tu veux éviter les balises html, tu peux utiliser la séquence (*SKIP)(*FAIL) pour forcer le moteur de regex à échouer et à réessayer après la position atteinte dans la chaîne au niveau du (*SKIP). Ce type de commandes est appelé Bactracking Control Verb (verbe de contrôle du backtracking):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ( preg_match('~&lt; [^&]*+ (?: & (?!gt;) [^&]* )*+ &gt; (*SKIP)(*F) | Zorglub \K .*? (?=Mouffette)~Ssx', $glossaryItemContent, $match) ) {
        $resultat = $match[0];
    } else { /* faire autre chose */ }

Discussions similaires

  1. Mail et css
    Par Truc dans le forum Modules
    Réponses: 2
    Dernier message: 01/10/2003, 22h25
  2. .css
    Par rgarnier dans le forum XMLRAD
    Réponses: 4
    Dernier message: 25/04/2003, 15h34
  3. Cherche regex...
    Par laurent_h dans le forum C
    Réponses: 4
    Dernier message: 31/03/2003, 11h24

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