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 :

Parser une page pour remplaçer des mots par d'autres


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 57
    Points : 48
    Points
    48
    Par défaut Parser une page pour remplaçer des mots par d'autres
    Bonjour,

    voilà je souhaite remplacé des mots dans une page par d'autres.
    j'ai donc effectuer un str_replace sur ma variable.

    Mais, mon problème vient du fait que je veux rajouter un lien sur certains mots :

    mot1 devient <a href="page-sur-ce-mot1.php">mot1</a>

    sans toutefois rajouter de liens sur les mots qui ont déjà un lien ou si le mot se trouve dans une balise title, meta..
    <a href="">mot1</a> => pas de remplacement
    <title>mot1</title> => pas de remplacement



    est-ce possible avec un puissant reg ?
    comment procéder ?

    Les solutions auquelles j'ai pensé en vrac :
    utiliser un parser xml sur du code xhml.
    ignorer les balises a, title, ..etc pour isoler les zones où l'on remplace les mots et y appliquer notre str_replace.

    Merci pour vos pistes

  2. #2
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    Salut,
    ca doit être faisable avec un motif de ce style :

    $patt = '`([^>])(mot1)([^<])`si';
    $out = '[[$2]]';
    echo preg_replace($patt, $out, $str);


    Bye

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 57
    Points : 48
    Points
    48
    Par défaut
    mais si on a <p>mot</p> il faut le parser !

  4. #4
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    Dans ce cas tu peux utiliser une assertion :

    $patt = '`(mot1)(?!</title>|</a>)`si';

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 57
    Points : 48
    Points
    48
    Par défaut
    tu pourrais m'expliquer à quoi correspond le !? et le 'si'
    thx!

    et ca ne fonctionnera pas si l'on a un motif de ce genre :
    <title>baablbalbla mot baabl</title>

  6. #6
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    ?!, c'est une assertion avant négative; un test sur les caratères suivants.
    s, c'est pour que que le caractère . remplace définisse n'importe quel caractère plus les sauts de ligne
    i, c'est l'insensibilité à la casse lors de la recherche

Discussions similaires

  1. Réponses: 6
    Dernier message: 01/07/2011, 17h09
  2. Réponses: 2
    Dernier message: 22/10/2007, 17h50
  3. [Mail] Codage d'une page pour envoyer des messages.
    Par cyrilmarc dans le forum Langage
    Réponses: 5
    Dernier message: 21/11/2006, 21h53
  4. parser une page HTML pour en retirer de l'info
    Par belakhdarbts10 dans le forum ASP
    Réponses: 1
    Dernier message: 29/10/2006, 18h38
  5. [POO] Problème pour Parser une page XML
    Par Death83 dans le forum Langage
    Réponses: 18
    Dernier message: 29/08/2006, 10h15

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