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 :

Recherche de mots et balises HTML [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Par défaut Recherche de mots et balises HTML
    Bonjour,

    j'essaye de créer une procédure permettant de remplacer certains mots dans un contenu HTML...
    voici mon motif actuel : #\b'.$val['mot'].'\b#iu

    Sauf que je viens de m'apercevoir que cela pose problème avec les valeurs des attributs des balises HTML (ex le title et src d'une balises IMG).

    Quel serait alors le motif pour récupérer les mots exceptés ceux qui sont à l'intérieur des balises HTML ?

    Merci d'avance

  2. #2
    Membre émérite
    Avatar de gwinyam
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 162
    Par défaut
    Je tenterais bien de suggérer:

    #\b[^<.]?'.$val['mot'].'[^>.]?\b#iu

  3. #3
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Par défaut
    apparemment, c'est pas encore ça...

    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    $mot = 'images';
    $chaine = '<p style="text-align:center;"><img src="/images/truc.jpg" alt="" /></p><p>Les images sont belles.</p>';
    $motif = '#\b[^<.]?'.$mot.'[^>.]?\b#iu';
    $chaine = preg_replace($motif, 'XXXX', $chaine);
    echo htmlentities($chaine);
    ?>
    affiche :
    <p style="text-align:center;"><img src="/XXXXtruc.jpg" alt="" /></p><p>LesXXXXsont belles.</p>
    alors que j'aimerais avoir :
    <p style="text-align:center;"><img src="/images/truc.jpg" alt="" /></p><p>Les XXXX sont belles.</p>

  4. #4
    Membre expérimenté Avatar de frol
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 288
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    $mot = 'images';
    $chaine = '<p style="text-align:center;"><img src="/images/truc.jpg" alt="" /></p><p>Les images sont belles.</p>';
    $motif = '#[^/]'.$mot.'#iu';
    $chaine = preg_replace($motif, 'XXXX', $chaine);
    echo htmlentities($chaine);
    ?>
    voila
    n'oublie pas résolu si c'est le cas

  5. #5
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Par défaut
    merci pour ta participation frol mais la chaine que j'ai fournit précédemment n'était qu'un exemple...
    évidemment, je ne cherche pas seulement à exclure un mot lorsque celui se trouve après <img src="/

    Alors voici un nouvel exemple, dans la chaine suivante, j'aimerais remplacer seulement le premier et le dernier "images" (en excluant le n°2 et 3)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $chaine = '<span>images</span><p style="text-align:center;"><img src="/images/truc.jpg" alt="Des très jolies images" /></p><p>Les images sont belles.</p>';
    Apparemment, il serait possible dans mon cas, d'utiliser les masques conditionnels. J'essaye de mettre en pratique mais pour l'instant... aucun résultat.


  6. #6
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Bonjour,

    Tu peux peut-être y arriver avec les assertions avant négatives.
    Quelque chose comme '#\b'.$val['mot'].'\b(?![^<]*>)#iu'

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

Discussions similaires

  1. Séparer des mots de balises HTML
    Par kandro dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 28/12/2011, 15h40
  2. recherche fulltext et balises html
    Par sylvainS63 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 29/10/2007, 09h26
  3. module de recherche de mots dans une page html
    Par Drozo dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 01/08/2006, 09h57
  4. Réponses: 12
    Dernier message: 02/12/2005, 23h07
  5. moteur de recherche exclusion balises HTML
    Par RobinNono dans le forum ASP
    Réponses: 1
    Dernier message: 03/10/2005, 22h51

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