Recréer des liens dans un texte.
16 messages • Page 1 sur 2 • 1, 2
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
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
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 {{
Leonick a écrit:avec un eregi_replace, après avoir vérifié que le mot existe dans la base
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
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.
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.
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
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: Dim Sep 03, 2006 11:56
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
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
Formation recommandée sur ce thème :
Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- 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







le forum