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 :

Lien automatique [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de php_de_travers
    Inscrit en
    Juin 2004
    Messages
    460
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 460
    Par défaut Lien automatique
    Bonjour,

    j'utilise la manip suivante pour modifier mes textes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function affiche_texte_auto_lien ($texte)
                        {
                            $texte =  stripslashes ($texte ) ;  
     
                            $texte = ereg_replace ("arbitre", "<strong><a href=\"../arbitres/arbitre.php\">arbitre</a></strong>" , $texte) ; 
     
                            print (nl2br($texte)) ;
                            return ($texte) ;
     
                        }
    Mon problème est que si je fais pareil pour le mot foot, il génère un lien à l'intérieur même du mot football, ce qui le rend difficilement lisible.
    En revanche, avec foot. et foot, rien ne se passe à cause des signes de ponctuation qui suivent.

    Est-il possible de lui faire reconnaître les mots complets, et non pas les morceaux de mots et de permettre une reconnaissance même si le mot est suivi d'une virgule, d'un point etc... ?
    Par avance, merci de votre aide.

  2. #2
    Membre émérite Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Par défaut
    utilise plutot un preg_replace

    voila la regexp (vite fait)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [^0-9,a-z]arbitre[^0-9,a-z]

  3. #3
    Membre éclairé Avatar de php_de_travers
    Inscrit en
    Juin 2004
    Messages
    460
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 460
    Par défaut
    Merci bien pour cette piste.
    Si ce n'est pas trop abuser, ça donne quoi sur un cas concret comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $texte = ereg_replace ("arbitre", "<strong><a href=\"../arbitres/arbitre.php\">arbitre</a></strong>" , $texte) ;

  4. #4
    Membre émérite Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Par défaut
    le mieux :
    PCRE est plus rapide que POSIX
    tu vas sur l'onglet PCRE (preg_*) ou POSIX (ereg*) et tu t'amuses :

    REX V

  5. #5
    Membre éclairé Avatar de php_de_travers
    Inscrit en
    Juin 2004
    Messages
    460
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 460
    Par défaut
    Voilà une réponse qui ouvre encore de nouveaux horizons.
    Merci vraiment beaucoup !

    Rectification : j'ai rien comprendu à cette usine à gaz.
    Si quelqu'un a la solution à mon pb,... !

  6. #6
    Membre éclairé Avatar de php_de_travers
    Inscrit en
    Juin 2004
    Messages
    460
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 460
    Par défaut
    Par hasard, je viens de trouver ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php 
    $ch='Bon alors voilou, la bonne méthode consiste à limiter les 
     mots de façon à éviter de prendre une partie, comme sol dans 
     solide, bravo dans bravoure et bon dans bonne comme au début, 
     même si BRAVO ou BON sont en majuscules ou encore un mix des 
     deux et au pluriel comme BrAVoS.'; 
     
    $mot=array('bravo','bon','sol'); 
     
    $motif='`\b(('.implode('|',$mot).')s?)\b`si'; 
     
    $sortie='<span style="background-color:#ffcc00">$1</span>'; 
    echo preg_replace($motif,$sortie,$ch); 
    ?>
    C'était sur http://www.expreg.com

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

Discussions similaires

  1. [Tableaux] lien automatique en php
    Par e-m.guillaume dans le forum Langage
    Réponses: 9
    Dernier message: 30/01/2006, 23h44
  2. Réponses: 5
    Dernier message: 24/01/2006, 01h16
  3. créer des liens automatiquement mais sans boucle
    Par psychoBob dans le forum Langage
    Réponses: 8
    Dernier message: 15/12/2005, 15h20
  4. [Tableaux] Création de lien automatique
    Par GarGamel55 dans le forum Langage
    Réponses: 3
    Dernier message: 17/09/2005, 17h26
  5. [Tableaux] lien automatique en écrivant un nom
    Par jack1234 dans le forum Langage
    Réponses: 4
    Dernier message: 08/09/2005, 18h27

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