begin process at 2012 02 14 14:41:03
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Chaîne de caratère

 > GÉNÉRATEUR DE BALISE META KEYWORDS

GÉNÉRATEUR DE BALISE META KEYWORDS


 Information sur la source

Note :
5 / 10 - par 2 personnes
5,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Chaîne de caratère Classé sous :generateur, balise, meta, keyword, php Niveau :Initié Date de création :09/03/2010 Date de mise à jour :29/03/2010 12:08:09 Vu / téléchargé :3 808 / 122

Auteur : ParseError

Ecrire un message privé
Site perso
Commentaire sur cette source (12)
Ajouter un commentaire et/ou une note

 Description

Ceci est un script permettant de générer une balise META Keywords automatiquement.

Dans l'exemple, la fonction est appelée par  : keywords($chaine,1000);

$chaine doit contenir le texte de votre page, par exemple, et 1000 représente le nombre maximum de caractères que vous souhaitez dans la balise keywords.

Un tableau $bad_word est créé, il contient tous les mots que vous ne souhaitez pas voir apparaitre dans vos keywords. Il est donc à compléter.

La 1ère fonction utilisée (unaccent); n'est pas de moi, mais est très souvent utilisée dans nombre de codes sources.

Mise à jour et autre codes PHP sur http://www.parse-error.com

Source

  • <?php
  • /**
  • * Générateur de balise keywords
  • *
  • * @copyright Copyright (C) 2010 Parse Error http://www.parse-error.com
  • */
  • /* Fonction qui supprime les accents dans une chaîne */
  • function unaccent($text)
  • {
  • $trans = get_html_translation_table(HTML_ENTITIES);
  • foreach ($trans as $literal => $entity)
  • {
  • if (ord($literal) >= 192) {
  • $replace[] = substr($entity, 1, 1);
  • $search[] = $literal;
  • }
  • }
  • return str_replace($search, $replace, $text);
  • }
  • /* Fonction qui génère les keywords */
  • function keywords($string, $max_length_keywords)
  • {
  • $noTag = html_entity_decode(strip_tags(trim($noTag))); // On nettoie la chaine
  • $noTag = preg_replace('/[\n\r\t]/', ' ', $noTag); // On élimine les retours chariot, retours à la ligne et tabulations
  • $string = strtolower($string); // Met tout en minuscule
  • $string = unaccent($string); // Enleve les accents
  • $string = eregi_replace("[^A-Z\']", " ", $string); // Enlève tout ce qui n'est pas alphabétique ou une apostrophe
  • $string = preg_replace('#(^| +)[a-zA-Z]{1,2}\'#', ' ', $string); // Enleve les apostrophes
  • $words = explode(' ', $string); // Scinde la chaine en tableau
  • /* Effacement des mots non significatifs (Tableau exemple à compléter) */
  • $bad_word = array ('des', 'est', 'avec', 'les', 'une', 'sur', 'nous', 'qui', 'que', 'par', 'pas', 'dans', 'leur', 'ont', 'pour', 'sont', 'plus', 'ndlr', 'ceux', 'ceci', 'cela','cette');
  • $words = array_diff($words, $bad_word);
  • /* Suppression des entrées de moins de trois caractères */
  • foreach($words as $cle=>$valeur)
  • {
  • if(strlen($valeur) > 2)
  • {
  • $words2[]=$words[$cle];
  • }
  • }
  • $freq = array_count_values($words2); // Calcul du nombre d'occurences de chaque entrée
  • arsort($freq); // Tri du tableau associatif en fonction des valeurs
  • /* Création de la chaine de sortie */
  • $keywords='';
  • foreach ($freq as $tk => $tv)
  • {
  • if($keywords!='') $keywords .= ', '.$tk;
  • else $keywords=$tk;
  • }
  • if(strlen($keywords)>$max_length_keywords)
  • {
  • $keywords=substr($keywords,1,$max_length_keywords); // On coupe à $max_length_keywords caractères
  • $keywords=substr($keywords,0,strlen($keywords)-strlen(strrchr($keywords,','))); // Coupe propre après le dernier mot clé
  • }
  • return $keywords;
  • }
  • $chaine="Ce texte, <br />rédigé aujourd'hui, le 09 mars de l'année 2010, est un texte piège, avec des chiffres, des apostrophes mal placées, de la ponctuation... et du <b>HTML</b> !!!";
  • echo keywords($chaine,1000);
  • ?>
<?php
/**
* Générateur de balise keywords
*
* @copyright Copyright (C) 2010 Parse Error http://www.parse-error.com
*/

/* Fonction qui supprime les accents dans une chaîne */
function unaccent($text)
{
$trans = get_html_translation_table(HTML_ENTITIES);
foreach ($trans as $literal => $entity)
{
if (ord($literal) >= 192) {
$replace[] = substr($entity, 1, 1);
$search[] = $literal;
}
}
return str_replace($search, $replace, $text);
}
/* Fonction qui génère les keywords */
function keywords($string, $max_length_keywords)
{
$noTag = html_entity_decode(strip_tags(trim($noTag))); // On nettoie la chaine
$noTag = preg_replace('/[\n\r\t]/', ' ', $noTag); // On élimine les retours chariot, retours à la ligne et tabulations

$string = strtolower($string); // Met tout en minuscule
$string = unaccent($string); // Enleve les accents
$string = eregi_replace("[^A-Z\']", " ", $string); // Enlève tout ce qui n'est pas alphabétique ou une apostrophe
$string = preg_replace('#(^| +)[a-zA-Z]{1,2}\'#', ' ', $string); // Enleve les apostrophes

$words = explode(' ', $string); // Scinde la chaine en tableau

/* Effacement des mots non significatifs (Tableau exemple à compléter) */
$bad_word = array ('des', 'est', 'avec', 'les', 'une', 'sur', 'nous', 'qui', 'que', 'par', 'pas', 'dans', 'leur', 'ont', 'pour', 'sont', 'plus', 'ndlr', 'ceux', 'ceci', 'cela','cette');
$words = array_diff($words, $bad_word);

/* Suppression des entrées de moins de trois caractères */
foreach($words as $cle=>$valeur)
{
if(strlen($valeur) > 2)
{
$words2[]=$words[$cle];
}
}

$freq = array_count_values($words2); // Calcul du nombre d'occurences de chaque entrée
arsort($freq); // Tri du tableau associatif en fonction des valeurs

/* Création de la chaine de sortie */
$keywords='';
foreach ($freq as $tk => $tv)
{
	if($keywords!='') $keywords .= ', '.$tk;
	else $keywords=$tk;
}

if(strlen($keywords)>$max_length_keywords)
{
	$keywords=substr($keywords,1,$max_length_keywords); // On coupe à $max_length_keywords caractères
	$keywords=substr($keywords,0,strlen($keywords)-strlen(strrchr($keywords,','))); // Coupe propre après le dernier mot clé
}

return $keywords;
}
$chaine="Ce texte, <br />rédigé aujourd'hui, le 09 mars de l'année 2010, est un texte piège, avec des chiffres, des apostrophes mal placées, de la ponctuation... et du <b>HTML</b> !!!";
echo keywords($chaine,1000);
?>


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

29 mars 2010 12:08:10 :
Résolution d'un bug qui supprimait le dernier mot clé dans certains cas de figure.

 Sources du même auteur

Source avec Zip RECHERCHE DE MOTIF DANS UNE IMAGE

 Sources de la même categorie

ADRESSE ABSOLUE DE LA PAGE EN COURS, AVEC VARIABLES $_GET par Dariumis
Source avec Zip CLASSE D'OBJET DE RECHERCHE DE MOTS DANS DES TABLEAUX ET/OU ... par 8Tnerolf8
RÉCUPÉRER LES MINIATURES D'UNE VIDÉO YOUTUBE par tefa24600
Source avec Zip Source avec une capture CONVERTISSEUR DE NOMBRES EN TEXTE par macruz
Source avec Zip Source avec une capture CODAGE TEXTE >HTML, ISO, SPECIALCHARS, URL ET DECODAGE par Salva9473

 Sources en rapport avec celle ci

Source avec Zip COLLECTION.CLASS.MIN.PHP par thunderhunter
EXEMPLE D'APPLICATION DE L'ALGORITHME DE DIJKSTRA EN PHP par philtr8
Source avec Zip Source avec une capture EL COYOTOS LIVRE D'OR PHP 5 par elcoyotos
Source avec Zip Source avec une capture PAGINATION + FICHIER CSS par profdi
Source avec Zip M.V.C M.E.D par faceme

Commentaires et avis

Commentaire de LudovicJOLY le 09/03/2010 20:00:27 1/10

Ce code est inutile pour les moteurs de recherche. La balise meta keywords n'est plus utilisée pour le référencement.

De plus, le code risque de générer n'importe quoi.

Commentaire de ParseError le 09/03/2010 21:22:00

La plupart des moteurs ne la prennent pas en compte, mais l'intérêt principal est de générer un certain pourcentage de différence entre des pages relativement similaires.
En quoi penses-tu que le code va générer n'importe quoi ?
L'as tu testé au moins, avant de lui attribuer cette note ?

Commentaire de jadu le 15/03/2010 08:46:31

Par quoi les moteurs de recherche ont remplacé cette balise <META> ?
Excusez-moi, mais je ne le sais vraiment pas !
Comment donc référencer son site sur des mots-clés ?

les moteurs lisent tout le site ?
mais les pages dynamiques, alors ???? elles comptent pour du beurre [ pour rien] ???

Commentaire de ParseError le 15/03/2010 09:11:04

@Jadu :
Le contenu textuel et sémantique de tes pages est quasiment l'unique facteur qui te permettra de référencer ton site sur des mots clés (sans oublier les liens qui pointent vers ton site, s'ils contiennent ces mots clés dans l'intitulé du lien).
La balise META description est généralement affichée sur les recherches Google, d'où l'intérêt de la remplir.

Commentaire de jadu le 15/03/2010 09:16:41

une balise <META Description=""> sur chaque page ?
à créer à la volée aussi, comme la balise <title> ???

Commentaire de ParseError le 15/03/2010 09:29:01

Oui, tu peux la générer automatiquement si tu le souhaites, elle est du type <meta name="description" content="Ta description" />

Commentaire de jadu le 15/03/2010 12:08:29

Mais une description, ce n'est pas une suite de mots clés !!
il me faut donc ajouter une zone "description" dans ma base de donnée, avec une description préétablie pour chaque "demande" de l'internaute visiteur ! Bon, je ne vais pas m'ennuyer ! Sachant que les demandes sont variées et ... libres !!!

Commentaire de ParseError le 15/03/2010 15:28:37

Oui tout à fait, pour la description, si ton site comporte des articles dans une BDD, tu peux reprendre automatiquement le titre de l'article par exemple dans ta balise META description.

Commentaire de jadu le 15/03/2010 20:10:58 9/10

C'est bien, parseerror ! ok et merci
J'ai fait "tourner" le générateur de keywords et cela me permet, en fait de trouver les mots clef à placer dans un petit texte que j'écris en relation avec le sujet traité, texte que je place dans la BDD en "description" et qui sera pris "à la volée" lors d'un clic d'un visiteur !

Je mets une bonne note, mais, perfectionnisme oblige, je ne mets JAMAIS le maxi, car on peut toujours s'améliorer !!!  ;-D

Prends bien soin de toi !

Commentaire de jadu le 15/03/2010 20:12:04

J'avais moi-même pondu un truc du même genre mais trop lourdingue, j'avais tout gommé !

Bye !

Commentaire de Astalavista le 28/03/2010 19:00:26

Certes pour les métas, c'est pas vraiment utile, mais bon, ce code pourrais servir a récupère les mot clef pour un forum perso par exemple, pour avoir une recherche plus ciblé ...
Par contre :
Ce code me chagrine :
/* Création de la chaine de sortie */
$keywords='';
foreach ($freq as $tk => $tv)
{
$keywords .= ', '.$tk;
}
Sa se ne serais pas plus simple ?
$keywords = implode(', ', array_flip($freq));

Commentaire de ParseError le 29/03/2010 11:52:50

Bonjour, non, tel quel ca n'est pas équivalent, vous pouvez tester et le constater ;-) Néammoins, vous avez raison, il y a surement moyen de simplifier ce bloc. Avis aux amateurs ! Je cherche aussi.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

HELP!!pour Generateur de prog php... [ par webkiller51 ] OU peut -on trouver un générateur de prog PHP merci Répondez c ttt urgent!!MERCI d'avance balise <noscript> en php ??? [ par pyranhaz ] Bonjour,existe-il une façon efficace en php de rediriger tout visiteur automatiquement qui n'a pas le "active scripting" d'activé sur sa machine ???il Transmission de caractere accentue avec la balise <meta> en PHP [ par yandre100 ] Salut Tout le monde. J'ai des problemes a transmettre des caracteres accentues en Php. J'utillise pour cela la balise meta comme ceci:&lt;meta http-eq Generateur etats php [ par manunam80 ] Bonjour, Je suis à la recherche d'un générateur d'états avec un déploiement web et personnalisable avec PHP.J'ai entendu parler de AGATA report mais j Génération de balise d'un fichier xml par PHP [ par wettanam ] exemple du fichier xml&lt;balise&gt;&lt;nom&gt;Olivier&lt;/nom&gt;&lt;prenom&gt;Melanger&lt;/prenom&gt;&lt;email&gt;OlivM@yahoo.fr&lt;/email&gt;&lt;/b Balise php telechargement [ par keys ] Bonjour tout le monde bien que j'ai lu certain post concernant ce sujet je n'ai pas trouv&#233; de r&#233;ponse appropri&#233;e car elle est, je pense [req] Generateur RSS en php 5 sans mysql [ par greg1386 ] Bonjour a tous voila j'ai un requete plutot simple je voudrai un generateur de flux RSS en PHP5 mais au lieu de sa baser sur une table SQL celui ci do la balise meta [ par hou1919 ] Salutj'ai un probleme avec cette instruction en utilisant internet explorer&lt;meta http-equiv="refresh" content="0;URL=affetatciviltmp.php&gt; et mer la balise en php [ par kedieng ] Salut!c'est encore jl fendji. Je viens de voir dans un doc sur le langage php la balise &lt;pre&gt; juste àprès un echo et je ne sais pas à quoi ca se Modifier dans une balise xml [ par bolandfranck ] Bonjour, je c'est que se que je demande est simple mais je n'arrive tout de meme pas a comprendre le fonctionnement en php d'un fichier xml. Mon probl


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,983 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales