Recréer des liens dans un texte.

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par Meeuuuhhh, 2 Mai 2007.

  1. Meeuuuhhh
    Meeuuuhhh WRInaute passionné
    Inscrit:
    8 Janvier 2007
    Messages:
    1 498
    J'aime reçus:
    0
    Bonjour,

    Voilà j'ai un texte comme ça, par exemple :

    Code:
    Je souhaite une grande {maison{ avec un jardin. 
    J'ai une table 'liens' avec 1000 mots.

    Je souhaite que si le mot "maison" se trouve dans la table 'liens', il soit remplacer dans la chaîne précédente par un lien.
    Ce qui donne :

    Code:
    Je souhaite une grande <a href="maison.htm">maison</a> avec un jardin.
    Comment faire SVP :?:
     
  2. serval2a
    serval2a WRInaute accro
    Inscrit:
    21 Mars 2005
    Messages:
    2 550
    J'aime reçus:
    0
    Bonjour,
    Tu peux le faire depuis PHPmyadmin avec une requête UPDATE.
    @+
     
  3. Meeuuuhhh
    Meeuuuhhh WRInaute passionné
    Inscrit:
    8 Janvier 2007
    Messages:
    1 498
    J'aime reçus:
    0
    Ca fonctionnera pas. Il faut un script qui relève le mot compris entre {{ et qui aille chercher dans la table 'liens' si ce mot s'y trouve et qui le cas échéant crée un lien à la place du {mot{.
     
  4. Leonick
    Leonick WRInaute accro
    Inscrit:
    8 Août 2004
    Messages:
    19 274
    J'aime reçus:
    0
    avec un eregi_replace, après avoir vérifié que le mot existe dans la base
     
  5. Meeuuuhhh
    Meeuuuhhh WRInaute passionné
    Inscrit:
    8 Janvier 2007
    Messages:
    1 498
    J'aime reçus:
    0
    J'ai ça comme script :
    Code:
    $liste_mot = array('maison', 'voiture', 'vélo', 'jardin'); 
     
    $chaine = 'Je souhaite une grande {maison{ avec un jardin.';
     
    echo preg_replace('#\b(' . implode('|', $liste_mot) . ')\b#', '<a href="$1.htm">', $chaine);
    L'inconvénient, c'est qu'il analyse tous les mots du texte, alors qu'il n'y a besoin de le faire que pour ceux délimité par {{
     
  6. Leonick
    Leonick WRInaute accro
    Inscrit:
    8 Août 2004
    Messages:
    19 274
    J'aime reçus:
    0
    il faut mettre les { dans le masque de recherche
     
  7. julienr
    julienr WRInaute impliqué
    Inscrit:
    5 Août 2003
    Messages:
    939
    J'aime reçus:
    2
    il semblerait que ereg disparaisse dans la future version de php, autant s'habituer à preg qui semble t-il est, en plus, bcp plus rapide ;)
     
  8. Meeuuuhhh
    Meeuuuhhh WRInaute passionné
    Inscrit:
    8 Janvier 2007
    Messages:
    1 498
    J'aime reçus:
    0
    Va pour preg, mais c'est pareil. Comment je fais pour mettre le { dans le masque de recherche, comme dit leonick, puisque je ne connais pas à l'avance le mot à remplacer dans la chaine. Ou pour mieux dire, j'ai des centaines de textes et dans chacun d'entre eux, les mots à remplacer sont délimités par {{ je n'en ai pas la liste d'avance, ça doit être détecté à l'affichage.
     
  9. Meeuuuhhh
    Meeuuuhhh WRInaute passionné
    Inscrit:
    8 Janvier 2007
    Messages:
    1 498
    J'aime reçus:
    0
    En fait il faut que le script fasse cela :
    - Lecture du texte.
    - Detection des éventuels {mot_a_remplacer_par_des_liens{
    - recherche dans la table 'liens' du mot en question.
    - Si il y est, on le remplace par un lien.
     
  10. nalrem
    nalrem WRInaute occasionnel
    Inscrit:
    6 Avril 2003
    Messages:
    350
    J'aime reçus:
    0
    Tu as intérêt à commencer par stocker en une fois toute ta table dans un tableau php, sinon tu risque de faire des centaines d'appels à ta base de données s'il y a beaucoup de mots.
    Ensuite avec une expression régulière tu cherches les motif {tonmot{ et tu le remplace s'il est dans le tableau généré à partir de ta base.
     
  11. Meeuuuhhh
    Meeuuuhhh WRInaute passionné
    Inscrit:
    8 Janvier 2007
    Messages:
    1 498
    J'aime reçus:
    0
    J'ai récupéré un script et je l'ai arrangé, mais ça fonctionne pas :

    Code:
    $sql = "SELECT libelle FROM liens ";
    $result = mysql_query($sql);
    $liste_mot = '';[color=blue] // pourquoi c'est vide ? [/color]
    while( $liste = mysql_fetch_assoc($result) )
      $liste_mot .= $liste['mot'] . '|'; [color=blue]//c'est quoi ces .= et ce '!' ? [/color]
    $liste_mot = rtrim($liste_mot, '|');
     
    echo preg_replace('#{('.$liste_mot.'){#i', '<a href="$1.htm">', $texte);
    A vrai dire, je pige pas d'où sort le $1 :oops:
     
  12. julienr
    julienr WRInaute impliqué
    Inscrit:
    5 Août 2003
    Messages:
    939
    J'aime reçus:
    2
    essaye ceci
    Code:
    $sql = "SELECT libelle FROM liens ";
    $result = mysql_query($sql);
    $search = array();
    $replace = array();
    
    while( $r = mysql_fetch_array($result) ) {
       $search[] = '{'.$r['libelle'].'{';
       $replace[] = '<a href="'.$r['libelle'].'">'.$r['libelle'].'</a>';
    }
     
    $texte = str_replace( $search, $replace, $texte );
    
    :)
     
  13. Chirurgien
    Chirurgien WRInaute discret
    Inscrit:
    3 Septembre 2006
    Messages:
    62
    J'aime reçus:
    0
    le "$1" sera remplacé par ce qui est entre parathèses dans ton critère de recherche soit ici : ('.$liste_mot.')

    pour en savoir plus recherche des infos sur les expressions régulières ;)
     
  14. Meeuuuhhh
    Meeuuuhhh WRInaute passionné
    Inscrit:
    8 Janvier 2007
    Messages:
    1 498
    J'aime reçus:
    0
    Ok, alors merci à tous, je crois que ça fonctionne.

    Je dois m'occuper d'un autre script en urgence, mais avec le bout de code de julienr c'est bon.

    A tout hasard, un preg_replace() ne serait pas mieux qu'un str_replace() ?

    Merci à vous en tout cas :)
     
  15. Leonick
    Leonick WRInaute accro
    Inscrit:
    8 Août 2004
    Messages:
    19 274
    J'aime reçus:
    0
    preg_replace est prévu pour une utilisation plus poussée, du genre références arrières, etc...
    Là, vu qu'on remplace un mot par un autre, quand il existe, str_replace() est le plus adapté
     
  16. Meeuuuhhh
    Meeuuuhhh WRInaute passionné
    Inscrit:
    8 Janvier 2007
    Messages:
    1 498
    J'aime reçus:
    0
    Ok, ça roule. Encore merci.
     
Chargement...
Similar Threads - Recréer liens Forum Date
[JavaScript Array] modifier un code html sans le supprimer/recréer Développement d'un site Web ou d'une appli mobile 20 Juin 2022
Recréer une page Facebook perso à partir d'une sauvegarde Facebook 18 Juillet 2016
backup sql, importer un fichier dump pour recréer une table sql Administration d'un site Web 31 Mars 2014
Supprimer des pages "pénalisées" et les recréer mieux optimisées ? Débuter en référencement 28 Novembre 2012
Search Console Temps de prise en compte par Google de la disparition de liens Netlinking, backlinks, liens et redirections 9 Novembre 2022
Liens de références Netlinking, backlinks, liens et redirections 7 Novembre 2022
Goggle remplace nos propres liens par les siens dans les résultats de recherche Référencement Google 6 Août 2022
Liens en do follow ou no follow pour créditer les images ? Netlinking, backlinks, liens et redirections 14 Mai 2022
Redirection 404 via le .htaccess / pb avec les liens relatifs Débuter en référencement 5 Mai 2022
Ajouter des liens sortants externes pour améliorer le référencement Netlinking, backlinks, liens et redirections 2 Mai 2022
liens de shopping AdSense AdSense 1 Avril 2022
Search Console Bannir des liens entrants de certains pays Netlinking, backlinks, liens et redirections 21 Mars 2022
Pose de liens : Besoin d'aide d'ordre technique et besoin d'éclairage Netlinking, backlinks, liens et redirections 9 Mars 2022
WordPress redirection de liens WP qui se font tout seul Demandes d'avis et de conseils sur vos sites 17 Février 2022
Liens et sous-domaine Netlinking, backlinks, liens et redirections 25 Janvier 2022
Liens toxiques sous semrush Netlinking, backlinks, liens et redirections 24 Janvier 2022
Liens NoFollow mais visible dans Google Search Console? Débuter en référencement 11 Janvier 2022
Menu, liens et maillage du site Débuter en référencement 6 Janvier 2022
Problème sur de l'obfuscation de liens avec webflow Développement d'un site Web ou d'une appli mobile 4 Janvier 2022
Ouvrir 2 liens en avec un seul Développement d'un site Web ou d'une appli mobile 22 Décembre 2021