Formation par Olivier Duffez

Formation au référencement par Olivier Duffez, créateur de WebRankInfo !
Une formule efficace alliant théorie et pratique, avec une haute disponibilité des intervenants
Cette formule a déjà convaincu plusieurs centaines d'entreprises, pourquoi pas vous ?
Réservez vite votre place en ligne (convention possible pour imputer sur le budget formation)

Formation référencement Marseille

Générer les keywords à la volée

Poster un nouveau sujet Imprimer cette discussion    Forum -> Administration d'un site Web   Les dernières discussions de ce forum sont disponibles au format RSS
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 
SnAKes
WRInaute discret
WRInaute discret

Inscrit le: 21 Mai 2004
Messages: 56
Localisation: Londres

URL permanente de ce messagePosté le : Ven Aoû 05, 2005 16:32    Sujet du message: Générer les keywords à la volée

Avec la bufferisation des sorties, PHP permet de faire un prétraitement de la page avant l'envoi au navigateur. On peut par exemple généré à la volée les paramètres alt et title de tous les tags <img> dans la page.

Ici je vous propose mon script que j'utilise pour générer les mots clefs d'une page.

Code:
setlocale(LC_CTYPE, 'fr_FR');

// bufferization des sorties text afin de pouvoir faire un prétraitement
// avant d'envoyer au navigateur
ob_start("my_ob_handler");

function unaccent($text) {
   $trans = get_html_translation_table(HTML_ENTITIES); //Get the entities table into an array
   foreach ($trans as $literal => $entity) { // Create two arrays, for accented and unaccented forms
      if (ord($literal) >= 192) { // Don't contemplate other characters such as fractions, quotes etc
         $replace[] = substr($entity, 1, 1); //Get 'E' from string '&Eaccute' etc.
         $search[] = $literal;
      }
   } //Get accented form of the letter
   return str_replace($search, $replace, $text);
}

// Extrait du corps de la page HTML générée tous les mots et couple de mots distinct
// puis trie la list en mettant en haut les mots et couple de mots les plus fréquents
function getWords($string, $weight=3) {
   // Petite astuce pour extraire les mots clefs des paramètres alt et title
   $noTag = preg_replace("/alt=\"(.*?)\"/", "> \\1 <", $string);
   $noTag = preg_replace("/title=\"(.*?)\"/", "> \\1 <", $noTag);

   // Il faut rajouter un espace avant les < et > afin qu'une fois one élémine les
   // tag les mots ne soient pas collés les uns aux autres la où il y avait le tag
   $noTag = preg_replace('/</', ' <', $noTag);
   $noTag = preg_replace('/>/', '> ', $noTag);
   
   // On élimine les tags
   $noTag = html_entity_decode(strip_tags($noTag));
   
   // On vire les retours chariot, retours à la ligne et tabulation
   $noTag = preg_replace('/[\n\r\t]/', ' ', $noTag);
   $noTag = preg_replace('/  /', ' ', $noTag);
   
   // On enlève les accents à toutes les lettres
   $noTag = unaccent($noTag);
   
   // On remplace tous les caractères non alphanumériques en espace
   $noTag = eregi_replace("[^a-z0-9]", " ", $noTag);

   // Minuscules
   $noTag = strtolower($noTag);

   // Mise en tableau de tous les mots de la page
   $words = array();
   $words = explode(" ", $noTag);

   $uniqWords = array();

   // Détection des mots distinct avec leur poids selon la fréquence
   // d'apparition dans la page
   foreach($words as $word) {
      if(!empty($word)) $uniqWords[$word]++;
   }
   reset($words);

   // Détection de couples de mots distincts avec poids      
   for($i = 0; $i < count($words); $i++) {
      if(!empty($words[$i]) && !empty($words[$i + 1])) {
         $coupleOfWords = $words[$i] . " " . $words[$i + 1];
         $uniqWords[$coupleOfWords]++;
      }
   }

   // Tri selon le poids
   ksort($uniqWords);
   
   // Génération des mots clefs selon leur poids
   // On ne garde que les mots dont le poids et de minimum $weight
   while(list($key, $val) = each($uniqWords)) {
      if(strlen($key) > 2 && $val > $weight) {
         $keywords .= $key . ", ";
      }
   }
   return $keywords;
}

// Fonction callback pour la bufferisation
function my_ob_handler(&$buffer) {
   // Génération des mots clefs
   $keywords = getWords($buffer, 2);
   
   // Remplacement de la chaine --KEYWORDS-- présente dans le template par les
   // mots clefs générés.
   $buffer = preg_replace("/--KEYWORDS--/", "$keywords", $buffer);
   
   // Compression GZip
   return ob_gzhandler($buffer, 5);
}


Dans la page PHP qui génère le HTML, dans l'entete HTML on mettra
<meta name="keywords" value="--KEYWORDS--">

--KEYWORDS-- sera remplacé par les mots clefs.

Cette méthode n'est pas forcément la meilleur mais elle marche pour moi.
 
SnAKes Visiter le site web du posteur
medium69
WRInaute accro
WRInaute accro

Inscrit le: 07 Mai 2005
Messages: 2151
Localisation: Je sais pas trop ;)

URL permanente de ce messagePosté le : Ven Aoû 05, 2005 19:23    Sujet du message: Générer les keywords à la volée

Je ne sais pas si c'est bon dans le sens où les moteurs tiennent déjà compte de ces mots-clés dans le corps de la page.

Si tu met des mots-clés (avec éventuellement des fautes de frappes), dans ta meta, je pense que c'est juste un plus par rapport à ta méthode.

Je passe beaucoup de temps à générer mes mots-clés et description sur mes page, et je me sers de plusieurs site :
Arrow http://inventory.overture.com/d/searchinventory/suggestion/
Arrow https://account.fr.miva.com/advertiser/Account/Popups/keywordgenbox.asp?Login=tr...
Arrow https://adwords.google.com/select/KeywordSandbox
 
medium69 Visiter le site web du posteur
julio38
WRInaute occasionnel
WRInaute occasionnel

Inscrit le: 19 Avr 2005
Messages: 124

URL permanente de ce messagePosté le : Ven Aoû 05, 2005 21:07    Sujet du message: Générer les keywords à la volée

Rajouter une petite borne de nombre de keyword ne ferais pas de mal.
Générer 1000 mots clés (si la page à du contenu) ne sera pas forcément très apprécié par les moteurs de recherche Wink
 
julio38 Visiter le site web du posteur
SnAKes
WRInaute discret
WRInaute discret

Inscrit le: 21 Mai 2004
Messages: 56
Localisation: Londres

URL permanente de ce messagePosté le : Lun Aoû 08, 2005 15:40    Sujet du message: Générer les keywords à la volée

Code:
setlocale(LC_CTYPE, 'fr_FR');

// bufferization des sorties text afin de pouvoir faire un prétraitement
// avant d'envoyer au navigateur
ob_start("my_ob_handler");

function unaccent($text) {
   $trans = get_html_translation_table(HTML_ENTITIES); //Get the entities table into an array
   foreach ($trans as $literal => $entity) { // Create two arrays, for accented and unaccented forms
      if (ord($literal) >= 192) { // Don't contemplate other characters such as fractions, quotes etc
         $replace[] = substr($entity, 1, 1); //Get 'E' from string '&Eaccute' etc.
         $search[] = $literal;
      }
   } //Get accented form of the letter
   return str_replace($search, $replace, $text);
}

// Extrait du corps de la page HTML générée tous les mots et couple de mots distinct
// puis trie la list en mettant en haut les mots et couple de mots les plus fréquents
function getWords($string, $weight=3,$maxwords=1000) {
   // Petite astuce pour extraire les mots clefs des paramètres alt et title
   $noTag = preg_replace("/alt=\"(.*?)\"/", "> \\1 <", $string);
   $noTag = preg_replace("/title=\"(.*?)\"/", "> \\1 <", $noTag);

   // Il faut rajouter un espace avant les < et > afin qu'une fois one élémine les
   // tag les mots ne soient pas collés les uns aux autres la où il y avait le tag
   $noTag = preg_replace('/</', ' <', $noTag);
   $noTag = preg_replace('/>/', '> ', $noTag);
   
   // On élimine les tags
   $noTag = html_entity_decode(strip_tags($noTag));
   
   // On vire les retours chariot, retours à la ligne et tabulation
   $noTag = preg_replace('/[\n\r\t]/', ' ', $noTag);
   $noTag = preg_replace('/  /', ' ', $noTag);
   
   // On enlève les accents à toutes les lettres
   $noTag = unaccent($noTag);
   
   // On remplace tous les caractères non alphanumériques en espace
   $noTag = eregi_replace("[^a-z0-9]", " ", $noTag);

   // Minuscules
   $noTag = strtolower($noTag);

   // Mise en tableau de tous les mots de la page
   $words = array();
   $words = explode(" ", $noTag);

   $uniqWords = array();

   // Détection des mots distinct avec leur poids selon la fréquence
   // d'apparition dans la page
   foreach($words as $word) {
      if(!empty($word)) $uniqWords[$word]++;
   }
   reset($words);

   // Détection de couples de mots distincts avec poids     
   for($i = 0; $i < count($words); $i++) {
      if(!empty($words[$i]) && !empty($words[$i + 1])) {
         $coupleOfWords = $words[$i] . " " . $words[$i + 1];
         $uniqWords[$coupleOfWords]++;
      }
   }

   // Tri selon le poids
   ksort($uniqWords);
   
   // Génération des mots clefs selon leur poids
   // On ne garde que les mots dont le poids et de minimum $weight
   $count = 0;
   while((list($key, $val) = each($uniqWords)) && ($count<$maxwords)) {
      if(strlen($key) > 2 && $val > $weight) {
         $keywords .= $key . ", ";
         $count++;
      }
   }
   return $keywords;
}

// Fonction callback pour la bufferisation
function my_ob_handler(&$buffer) {
   // Génération des mots clefs
   $keywords = getWords($buffer, 2);
   
   // Remplacement de la chaine --KEYWORDS-- présente dans le template par les
   // mots clefs générés.
   $buffer = preg_replace("/--KEYWORDS--/", "$keywords", $buffer);
   
   // Compression GZip
   return ob_gzhandler($buffer, 5);
}
 
SnAKes Visiter le site web du posteur
Tilt
WRInaute passionné
WRInaute passionné

Inscrit le: 26 Mar 2005
Messages: 758

URL permanente de ce messagePosté le : Dim Fév 11, 2007 19:01    Sujet du message: Générer les keywords à la volée

ceci sinon pour générer des mots-clés sémantiquement proches:
http://www.metys.net/blog/semantics-related-tags/
(en anglais)
 
Tilt Visiter le site web du posteur
 
Montrer les messages depuis:   
Revenir en haut    Forum -> Administration d'un site Web Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1 - 
Connexion
Nom d'utilisateur:    Mot de passe:      Se connecter automatiquement à chaque visite    

CLIQUEZ ICI pour vous inscrire à WebRankInfo (forum, annuaire, outils...)

Connexion

© 2001-2005 phpBB Group, support français
Personnalisation : WebRankInfo ™


 ODP  Firefox  Alsacreations  annuaire webmaster Yagoort