Recréer des liens dans un texte.
16 messages
• Page 1 sur 2 • 1, 2
-

Meeuuuhhh - WRInaute passionné

- Messages: 2015
- Inscription: 8 Jan 2007
Recréer des liens dans un texte.
Bonjour,
Voilà j'ai un texte comme ça, par exemple :
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 :
Comment faire SVP
Voilà j'ai un texte comme ça, par exemple :
- Code: Tout sélectionner
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: Tout sélectionner
Je souhaite une grande <a href="maison.htm">maison</a> avec un jardin.
Comment faire SVP
-

Meeuuuhhh - WRInaute passionné

- Messages: 2015
- Inscription: 8 Jan 2007
J'ai ça comme script :
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 {{
- Code: Tout sélectionner
$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 {{
-

Meeuuuhhh - WRInaute passionné

- Messages: 2015
- Inscription: 8 Jan 2007
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.
-
nalrem - WRInaute occasionnel

- Messages: 401
- Inscription: 6 Avr 2003
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.
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.
-

Meeuuuhhh - WRInaute passionné

- Messages: 2015
- Inscription: 8 Jan 2007
J'ai récupéré un script et je l'ai arrangé, mais ça fonctionne pas :
A vrai dire, je pige pas d'où sort le $1
- Code: Tout sélectionner
$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
-

julienr - WRInaute impliqué

- Messages: 911
- Inscription: 5 Aoû 2003
essaye ceci

- Code: Tout sélectionner
$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 );
-

Chirurgien - WRInaute discret

- Messages: 67
- Inscription: 3 Sep 2006
Meeuuuhhh a écrit:J'ai récupéré un script et je l'ai arrangé, mais ça fonctionne pas :
- Code: Tout sélectionner
$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
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
-

Meeuuuhhh - WRInaute passionné

- Messages: 2015
- Inscription: 8 Jan 2007
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
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
16 messages
• Page 1 sur 2 • 1, 2
Lectures recommandées sur ce thème :
- Calcul du ratio de liens profonds vers un site web - 14-05-2006
- Développez les échanges de liens facilement ! - 28-07-2002
- Référencement : stratégies de liens version 2006 - 16-02-2006
- Partenaires pour échanges de liens
Cet outil vous liste quelques sites qui font des liens vers des sites similaires au vôtre, pour vous aider à trouver des partenaires pour des échanges de liens. - Calcul du taux de liens vers des pages internes
Cet outil vous permet de calculer le taux de liens profonds vers un site web. Un lien profond est un lien qui ne pointe pas vers la page d'accueil mais au contraire vers une page interne du site. Les sites dont l'essentiel du référencement vient de leurs inscriptions dans des annuaires ont un taux de liens profonds faible ; à l'inverse, les sites de référence ont souvent un taux de liens profonds plus important, signe que leur contenu a suscité de nombreux liens spontanés. - Analyse des backlinks
Cet outil vous permet d'analyser en détails la "popularité" de votre site sur Google. En plus du nombre de liens pris en compte par Google, il calcule le pourcentage de liens internes parmi tous les liens, et il affiche les premières URL trouvées. - Recherche de citations d'un site en texte brut
Cet outil vous permet de trouver des pages citant votre site mais ne faisant pas (encore) de lien. Il suffira parfois d'un simple mail pour transformer cette simple citation en lien (backlink).
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités



