Transformer automatiquement des mots en lien.
34 messages • Page 1 sur 3 • 1, 2, 3
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
Transformer automatiquement des mots en lien.
Bonjour,
Je cherche soit un script tout fait soit une piste pour en développer un.
Je veux en fait pouvoir automatiquement remplacer dans une zone de texte certains mots par des liens.
Par exemple je poste une news du type...
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec molestie.
Sed aliquam sem ut arcu. Phasellus sollicitudin. Vestibulum condimentum
facilisis nulla. In hac habitasse platea dictumst. Nulla nonummy. Cras quis
libero. Cras venenatis. Aliquam posuere lobortis pede. Nullam fringilla
urna id leo. Praesent aliquet pretium erat. Praesent non odio. Pellentesque
a magna a mauris vulputate lacinia. Aenean viverra. Class aptent taciti
sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos.
Aliquam lacus. Mauris magna eros, semper a, tempor et, rutrum et, tortor.
et je veux que sur le site (Php / Mysql) apparaisse
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec molestie.
Sed aliquam sem ut arcu. Phasellus sollicitudin. Vestibulum condimentum
facilisis nulla. In hac habitasse platea dictumst. Nulla nonummy. Cras quis
libero. Cras venenatis. Aliquam posuere lobortis pede. Nullam fringilla
urna id leo. Praesent aliquet pretium erat. Praesent non odio. Pellentesque
a magna a mauris vulputate lacinia. Aenean viverra. Class aptent taciti
sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos.
Aliquam lacus. Mauris magna eros, semper a, tempor et, rutrum et, tortor.
Où en bleu on trouve des liens vers des articles en rapport avec les mots.
En fait c'est un système équivalent aux nouveaux formats pubs de type Intellitxt mais adapté au surf sur un même site.
Merci d'avance pour votre aide.
Je cherche soit un script tout fait soit une piste pour en développer un.
Je veux en fait pouvoir automatiquement remplacer dans une zone de texte certains mots par des liens.
Par exemple je poste une news du type...
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec molestie.
Sed aliquam sem ut arcu. Phasellus sollicitudin. Vestibulum condimentum
facilisis nulla. In hac habitasse platea dictumst. Nulla nonummy. Cras quis
libero. Cras venenatis. Aliquam posuere lobortis pede. Nullam fringilla
urna id leo. Praesent aliquet pretium erat. Praesent non odio. Pellentesque
a magna a mauris vulputate lacinia. Aenean viverra. Class aptent taciti
sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos.
Aliquam lacus. Mauris magna eros, semper a, tempor et, rutrum et, tortor.
et je veux que sur le site (Php / Mysql) apparaisse
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec molestie.
Sed aliquam sem ut arcu. Phasellus sollicitudin. Vestibulum condimentum
facilisis nulla. In hac habitasse platea dictumst. Nulla nonummy. Cras quis
libero. Cras venenatis. Aliquam posuere lobortis pede. Nullam fringilla
urna id leo. Praesent aliquet pretium erat. Praesent non odio. Pellentesque
a magna a mauris vulputate lacinia. Aenean viverra. Class aptent taciti
sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos.
Aliquam lacus. Mauris magna eros, semper a, tempor et, rutrum et, tortor.
Où en bleu on trouve des liens vers des articles en rapport avec les mots.
En fait c'est un système équivalent aux nouveaux formats pubs de type Intellitxt mais adapté au surf sur un même site.
Merci d'avance pour votre aide.
-

UsagiYojimbo - WRInaute accro

- Messages: 5192
- Inscription: Mer Nov 23, 2005 10:38
En php tu te définis une sorte de dictionnaire de mot, et les url terminales relatives à ces mots, et tu fais un recherche-remplacer dans ton contenu avant de l'afficher.
Le but étant de remplacer chaque occurence d'un mot présent dans le "dictionnaire" par un lien vers la page qui correspond à ce mot.
Le tout lié à un système de cache pour pas trop surcharger.
Le but étant de remplacer chaque occurence d'un mot présent dans le "dictionnaire" par un lien vers la page qui correspond à ce mot.
Le tout lié à un système de cache pour pas trop surcharger.
Salut,
Une petite recherche donne souvant des résultats sur WRI :
http://www.webrankinfo.com/forums/viewtopic_84877.htm
Une petite recherche donne souvant des résultats sur WRI :
http://www.webrankinfo.com/forums/viewtopic_84877.htm
J'ai ce script justement...
Je te donnes quelques piste pour ne recherché que les mots qui t'intéresse sans tous les passer à la moulinette.
Dans un premier temps, tu récupère tous les mots de ton texte :
Ensuite tu filtre un peu cette liste selon tes besoins (dans l'exemple, on ne garde que les mots de 2 caractères minimum, qui contiennent au moins une lettre, mais pas de chiffre) :
Maintenant que tu sais quels mots auront éventuellement un lien tu envoi une requête SQL vers ta liste de mots.
Dans mon cas, je tiens compte compte de la casse par exemple la planète Mars n'est pas le mois de mars... je tiens compte aussi de la possibilité qu'un terme puisse être retrouvé à partir de plusieurs forme (homonyme, pluriel, etc.). Je te laisse cherché un peu si tu veux adpaté cela à ton cas.
Pour faire simple, dans une table, tu as les champs suivant :
le mot ou le groupe de mots sur lequel mettre un lien
une liste de mots clés ou groupe de mots séparé par une virgule
Dans une autre, tu as une occurence de chaque mots séparé de tes mots clés avec l'identifiant correspondant ; c'est dans cette table que tu fera la recherche des termes de ton texte avec un WHERE cherche_mot IN('') en faisant un tri descendant pour mettre les mots les plus long au début ORDER BY Length(terme_lien) DESC.
Maintenant on crée un tableau contenant, tes occurences accompagné de leurs mots-clés :
Il ne te reste plus qu'à mettre tes liens en place :
Mon script est assez complexe et je ne t'ai donné que ce qui peut t'intéressé. Désolé de ne pas te dévoiler la totalité, mais j'y est passé plus de 200 heures de recherche et de codage pour le finaliser.
Par contre pense à faire une bonne mise en cache si tu as de très grandes pages.
Espérant avoir pu t'aider
Je te donnes quelques piste pour ne recherché que les mots qui t'intéresse sans tous les passer à la moulinette.
Dans un premier temps, tu récupère tous les mots de ton texte :
- Code: Tout sélectionner
$mots_texte = preg_split('#([\s/\[\]\\\@.,(){}><]+)#Us', $value, -1, PREG_SPLIT_NO_EMPTY); // Découpe du texte pour récupéré les mots séparés (pas de séparation des apostrophes)
$mots_texte_bis = preg_split('#([\s/\[\]\\\@.\',(){}><]+)#Us', $value, -1, PREG_SPLIT_NO_EMPTY); // Découpe du texte pour récupéré les mots séparés (séparation des apostrophe)
$mots_texte = array_merge($mots_texte, $mots_texte_bis); // On combine les deux tableaux créés
$mots_texte = array_unique($mots_texte); // On ne garde qu'une occurrence de chaque mot
$mots_texte = array_slice($mots_texte, 0); // On réindexe le tableau à partir de 0
Ensuite tu filtre un peu cette liste selon tes besoins (dans l'exemple, on ne garde que les mots de 2 caractères minimum, qui contiennent au moins une lettre, mais pas de chiffre) :
- Code: Tout sélectionner
$mots_defin = '';
$total_mots_texte = count($mots_texte);
for ($nb = 0; $nb < $total_mots_texte; $nb ++) {
if (mb_strlen($mots_texte[$nb]) >= 2 && preg_match('#[a-zA-Z]#U', $mots_texte[$nb]) && !preg_match('#[0-9]#U', $mots_texte[$nb]) ) {
$mots_defin .= $mots_texte[$nb].', '; // Préparation de la chaine de requête
Maintenant que tu sais quels mots auront éventuellement un lien tu envoi une requête SQL vers ta liste de mots.
Dans mon cas, je tiens compte compte de la casse par exemple la planète Mars n'est pas le mois de mars... je tiens compte aussi de la possibilité qu'un terme puisse être retrouvé à partir de plusieurs forme (homonyme, pluriel, etc.). Je te laisse cherché un peu si tu veux adpaté cela à ton cas.
Pour faire simple, dans une table, tu as les champs suivant :
Dans une autre, tu as une occurence de chaque mots séparé de tes mots clés avec l'identifiant correspondant ; c'est dans cette table que tu fera la recherche des termes de ton texte avec un WHERE cherche_mot IN('') en faisant un tri descendant pour mettre les mots les plus long au début ORDER BY Length(terme_lien) DESC.
Maintenant on crée un tableau contenant, tes occurences accompagné de leurs mots-clés :
- Code: Tout sélectionner
while ($terme = mysqli_fetch_assoc(ta_requête)) {
$defin[] = array('keyword' => $terme['defin_keywords'], // Mots clés
'terme' => $terme['defin_nom']); // Nom
}
Il ne te reste plus qu'à mettre tes liens en place :
- Code: Tout sélectionner
/* ****************************************************************************
- comparaisonNombreCaractere($value_1, $value_2)
- Permet de trier un tableau en fonction du nombre de caractère (tri ascendant)
- À utiliser avec « usort() »
- Dernière version : 22/09/07
-$value_1 : Première valeur
-$value_2 : Seconde valeur
**************************************************************************** */
function comparaisonNombreCaractere($value_1, $value_2) {
if (mb_strlen($value_1) == mb_strlen($value_2)) {
return 0;
}
if (mb_strlen($value_1) > mb_strlen($value_2)) {
return -1;
} else {
return 1;
}
}
// Mise en place du lien vers la définition du glossaire
if (isset($defin) ) {
$total_defin = count($defin);
for ($nb = 0; $nb < $total_defin; $nb ++) {
unset($keywords, $keywords_majus);
// Création du tableau de mots clés
$keywords_defaut = preg_split("/(, +)/", $defin[$nb]['keyword'], -1, PREG_SPLIT_NO_EMPTY); // Découpe des mots et expressions et mise dans un tableau
// Création d'un second tableau avec une majuscule en début de chaque valeur
$total_keywords_defaut = count($keywords_defaut);
for ($nb_1 = 0; $nb_1 < $total_keywords_defaut; $nb_1 ++) {
$keywords_majus[] = majuscule($keywords_defaut[$nb_1]);
}
$keywords_liste = array_merge ($keywords_defaut, $keywords_majus); // Fusion des deux tableaux précédents
array_unique ($keywords_liste); // On ne garde qu'une occurence de chaque mots
usort ($keywords_liste, 'comparaisonNombreCaractere'); // Tri ascendant en fonction du nombre de caractères
// Création de la liste de mots clés formatée pour la recherche
$keywords = '';
$total_keywords_liste = count($keywords_liste);
for ($nb_1 = 0; $nb_1 < $total_keywords_liste; $nb_1 ++) {
$keywords .= $keywords_liste[$nb_1].'|'; // préparation de la chaine des mots à recherché
}
// Mise en plce du lien une seule fois par terme
$value = preg_replace('#(^|[\s\b\'(>])('.$keywords.')([\s\b.\],)<]|$)#U', '<a href="http://www.site.com/$1.html</a>', $value, 1);
}
}
Mon script est assez complexe et je ne t'ai donné que ce qui peut t'intéressé. Désolé de ne pas te dévoiler la totalité, mais j'y est passé plus de 200 heures de recherche et de codage pour le finaliser.
Par contre pense à faire une bonne mise en cache si tu as de très grandes pages.
Espérant avoir pu t'aider
-

nickargall - WRInaute accro

- Messages: 5321
- Inscription: Lun Juin 13, 2005 14:13
@medium69: pour la peine je recommande 
OUI, une reco pour moi aussi.
Il y a de très bonnes idées dans ce script, notemment :
"Dans mon cas, je tiens compte compte de la casse par exemple la planète Mars n'est pas le mois de mars... je tiens compte aussi de la possibilité qu'un terme puisse être retrouvé à partir de plusieurs forme (homonyme, pluriel, etc.)".
Merci medium69
Il y a de très bonnes idées dans ce script, notemment :
"Dans mon cas, je tiens compte compte de la casse par exemple la planète Mars n'est pas le mois de mars... je tiens compte aussi de la possibilité qu'un terme puisse être retrouvé à partir de plusieurs forme (homonyme, pluriel, etc.)".
Merci medium69
merci pour ce code, surtout pour recuperer les mots, moi je me contentais d'un simple split("[^[:alpha:]]+", $texte)... et bien sur ca ne prenait pas les apostrophes en consideration...
par contre le coté j'enlève les mots de 2 caracteres je trouve ca trés bof
perso j'utilise cette liste:
http://www.ranks.nl/stopwords/french.html
et j'enleve les mots que je ne veux pas en 1 fois
array_diff($regs,$table_mots_bannis)
pour le reste j'ai pas suivie ton raisonnement
je me contente de recherche les mots qui ont le plus d'occurence et je fais mes liens;
apres je fais les liens sur les mots et basta...
tu as une url pour ton appli en production ?
par contre le coté j'enlève les mots de 2 caracteres je trouve ca trés bof
perso j'utilise cette liste:
http://www.ranks.nl/stopwords/french.html
et j'enleve les mots que je ne veux pas en 1 fois
array_diff($regs,$table_mots_bannis)
pour le reste j'ai pas suivie ton raisonnement
je me contente de recherche les mots qui ont le plus d'occurence et je fais mes liens;
- Code: Tout sélectionner
// groupe les Mots-clés identiques et on les compte
$stats = array_count_values($regs);
// trie par ordre croissant la liste
array_multisort($stats, SORT_DESC);
// crée un tableau avec les clés du tableau correpondants aux mots clés
$tabKey = array_keys($stats);
apres je fais les liens sur les mots et basta...
tu as une url pour ton appli en production ?
KOogar a écrit:tu as une url pour ton appli en production ?
Mon site
Par contre je le répète, il faut une bonne mise en cache car certains traitement peuvent être long.
Sur certaines de mes page, le traitement peut prendre jusqu'à 10 secondes. Il faut dire que je ne me contente pas uniquement de cela...
KOogar a écrit:par contre le coté j'enlève les mots de 2 caracteres je trouve ca trés bof
perso j'utilise cette liste:
http://www.ranks.nl/stopwords/french.html
et j'enleve les mots que je ne veux pas en 1 fois
array_diff($regs,$table_mots_bannis)
pour le reste j'ai pas suivie ton raisonnement
je me contente de recherche les mots qui ont le plus d'occurence et je fais mes liens;
- Code: Tout sélectionner
// groupe les Mots-clés identiques et on les compte
$stats = array_count_values($regs);
// trie par ordre croissant la liste
array_multisort($stats, SORT_DESC);
// crée un tableau avec les clés du tableau correpondants aux mots clés
$tabKey = array_keys($stats);
Je vais étudier cela pour optimiser mes scripts.
KOogar a écrit:le résultat est magnifique et grandement pertinant
pourquoi faire une mise en cache ? c'est à chaque nouvelle insertion de documents qu'il faut placer les liens et la mise à jour est déjà dans la table sql.
Disons que je ne me contente pas uniquement de mettre des liens...
Au sujet des liens, parfois, il ne faut pas que le mot soit pris en compte car dans le contexte il ne veut pas dire la même chose. dans ce cas, j'insère un filtre « § » juste à côté de ce mot ; il est enlevé avant la mise en page.
De même un terme contenu dans une url, un attribut, etc. ne doit pas être pris en compte...
J'ai plusieurs filtres pour plusieurs traitement selon mes besoins ; la majorité se mettent en place au fur et à mesure du traitement.
En vrac et tout en automatique :
Après un mediumCode ^^ pour :
Je t'envoi un MP pour un exemple concret de ce qui est en BDD et ce qui est à l'écran;)
34 messages • Page 1 sur 3 • 1, 2, 3
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 :
- Transformer de simples citations en liens
- Les laboratoires de Google s'ouvrent au grand public !
- La grogne contre AutoLink (Google Toolbar)
- Google Docs disponible sur les mobiles
- Mise à jour du générateur de mots clés dans AdWords
- Format optimal d'un lien pour le référencement
- Google Deskbar : la recherche sur votre bureau
- Google propose le lien Votre publicité sur ce site dans AdSense
- Présentation de Google Actualités (Google News)
- Faire des liens sortants externes
- Générer mots-clés automatiquement
- Je n'arrive pas à transformer ce lien
- le droit de copier automatiquement le lien d'un annuaire
- incidence des mots contenus dans un lien
- Un lien avec beaucoup de mots reste valable ou pas ?
- Nombre optimal de mots clés par lien pour le référencement
- Temps de prise en compte des mots cles dans un lien
- Comment transformer
- Peux t'on inclure des mots cles dans 1 lien affilie
- [RESOLU] transformer une date
- Comment transformer une url ?
- transformer nombre en chaine
- Transformer <h1> en texte en css
- Transformer un tableau en bloc
- Transformer design tableau en css
Consultez la description détaillée des produits ou services de Google suivants : Google AdWords API
- Transformer des textes non cliquables en liens
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). - Tester la validité d'un lien
Cet outil vous permet de tester la validité d'un lien pour le référencement. Il vous indique la nature du lien (lien en dur, redirection bien gérée par les moteurs ou redirection mal gérée par les moteurs). - Calculer le ratio de liens profonds
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.
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités






le forum