Cherche programme ou script qui met un lien sur un nom donné

Mawashigeri
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 31
Inscription: 21 Jan 2006

Cherche programme ou script qui met un lien sur un nom donné

Message le Lun Juin 12, 2006 18:03

Bonjour à tous,

Je recherche un programme ou un script qui permettrait d'afficher par automatisme des liens enregistrés dans une base de données ou dans un fichier précis. (par appel require ou autre).

Je m'explique: par exemple sur wikipedia.org, quand on tape n'importe quels mots, (exemple bateau :lol: ) j'ai tous des liens qui pointent vers des pages précises.

J'imagine que ce n'est pas l'écrivain ou le webmaster qui fait à chaque fois les liens, et donc qu'il doit avoir un script ou un fichier qui est appelé avec à l'intérieur, bateau = ||http://fr.wikipedia.org/wiki/Bateau|| , navires de commerce = ||http://fr.wikipedia.org/wiki/Bateau#Navires_de_commerce||

Pourriez-vous me dire si quelqu'un connait un tel script ou un tel programme ?
Ou si quelq'un pourrait me dire coment je peux le créer ou encore trouver de la documentation la dessus ?

Car j'en ai fortement besoin pour mes cours :)

Je vous remercie d'avance :wink:


finstreet
WRInaute accro
WRInaute accro
 
Messages: 16999
Inscription: 10 Juil 2005

Message le Lun Juin 12, 2006 19:57

essaye de regarder du coté de clickintext... c aussi ce qu'ils font

billyboylindien
WRInaute impliqué
WRInaute impliqué
 
Messages: 578
Inscription: 28 Fév 2005

Message le Lun Juin 12, 2006 20:03

Sur wikipedia il faut utilisr une syntaxe wiki c'est pas automatique


medium69
WRInaute passionné
WRInaute passionné
 
Messages: 2485
Inscription: 7 Mai 2005

Message le Lun Juin 12, 2006 21:28

Détrompe toi :!:

Pour être contributeur sur Wikipédia, je peux t'assurer que c'est les contributeurs qui indique dans le texte quel mot doit avoir un lien vers une définition.

Pour ma part, j'ai commencé à monté un glossaire avec le principe du BBcode inséré dans la BDD.

Pour avoir réfléchi à ton problème pour moi-même, j'ai la solution pour toi.

Il faut s'y prendre en plusieurs étapes :

:arrow: Tout d'abord, tu crée une table par exemple avec les mots à recherché dans un texte avec les pluriels éventuels, expression (dans ce cas tu prend par exemple le premier mot de l'expression) ou féminisation de mot.
Tes champs idéal :
- 1/ mot comme il doit être dans le texte (sing. plur. etc.) ou premier mot d'une expression.
- 2/ si le mot en question est une expression, un autre champ contenant l'expression complète

Les recherches seront faite sur la clé 1 qui sera indéxée.

:arrow: Tu sépare ton texte $chaine en mots séparé avec cela
Code: Tout sélectionner
$keywords = preg_split("/([\s,\.;:?!()]+)/", $chaine, -1, PREG_SPLIT_NO_EMPTY);


:arrow: Tu ne garde qu'une occurence de chaque termes (tu peux aussi améliorer en ne gardant que les mots supérieurs à x caractères, ou en bannir d'autres courant.
Code: Tout sélectionner
$keyword_unique = array_unique ($keywords);


:arrow: Tu recherche dans ta BDD de mots à définir tous les mots du tableau $keyword_unique. en récupérant soit le terme de la clé 1 ou, si il s'agit d'une expression, la clé 2.
Tu as donc un nouveau tableau $def avec tous les mots singulier, pluriels, expression, etc. potentiellement présent dans ton texte.

:arrow: Maintenant, tu as un tableau de ce genre
Code: Tout sélectionner
$def = array('mot', 'expression en plusieurs mot', 'définition', et un dernier', 'etc');


:arrow: il faut pouvoir avoir des url cohérente maintenant. donc on crée un autre tableau à partir de $def, pour pouvoir traité les caractères.
Code: Tout sélectionner
function traitementCaractereUrl($var) {   
   $var = eregi_replace('[.°()]', '', $var);
   $var = eregi_replace('[ \'/]', '-', $var);
   $var = eregi_replace('[+]', 'plus', $var);
   $var = eregi_replace('[áà]', 'a', $var);
   $var = eregi_replace('[ç]', 'c', $var);
   $var = eregi_replace('[éèê]', 'e', $var);
   $var = eregi_replace('[É]', 'E', $var);
   $var = eregi_replace('[îï]', 'i', $var);
   $var = eregi_replace('[ôöø]', 'o', $var);
   $var = eregi_replace('[û]', 'u', $var);
   
   return $var;
}

for ($nb = 0; $nb < count($def); $nb ++) {
   $def_url[$nb] = traitementCaractereUrl($var[$nb]);
   }


Tu as maintenant 3 variables :
Code: Tout sélectionner
$chaine = 'L'ensemble de ton texte que tu as écrit. Maintenant tu veux repérer les mots à définir';
$def = array('mot', 'expression en plusieurs mot', 'définition', 'et un dernier', 'etc');
$def_url = array('mot', 'expression-en-plusieurs-mot', 'definition', 'et-un-dernier', 'etc');


Tu peux enfin traiter ton texte en ne mettant un lien que vers la première occurence que l'on trouve :
Code: Tout sélectionner
for   ($nb = 0; $nb < count($def); $nb ++) {
   $chaine = preg_replace('/(\b)('.$def[$nb].')(\b)/Ui', '$1<a href="http://www.domaine.com/definition-'.$def_url[$nb].'.html" title="définition de $2">$2</a>$3', $chaine, 1);
}


Tu as toutes les données pour construire voire améliorerer ton code.

Tu peux améliorer ce code de multiple manière...

Je te donne là ce que j'ai pour le moment car j'y travaille pour l'améliorer et l'optimiser.

PS.
J'ai relu le code. je ne pense pas avoir fait d'erreur mais à voir quand même.

Si cela t'intéresse je te donnerais mon code définitif que j'aurais mis en place sur mon site quand il sera ok.


WebRankInfo
Administrateur du site
Administrateur du site
 
Messages: 19415
Inscription: 19 Avr 2002

Message le Jeu Juil 13, 2006 7:01

merci pour ces infos et ce code. Pourrais-tu détailler ce passage que je n'ai pas assez bien compris ?
Tu recherche dans ta BDD de mots à définir tous les mots du tableau $keyword_unique. en récupérant soit le terme de la clé 1 ou, si il s'agit d'une expression, la clé 2.
Tu as donc un nouveau tableau $def avec tous les mots singulier, pluriels, expression, etc. potentiellement présent dans ton texte.

Maintenant, tu as un tableau de ce genre
Code: Tout sélectionner
$def = array('mot', 'expression en plusieurs mot', 'définition', et un dernier', 'etc');


medium69
WRInaute passionné
WRInaute passionné
 
Messages: 2485
Inscription: 7 Mai 2005

Message le Jeu Juil 13, 2006 14:57

Depuis, j'ai modifié et amélioré le code... qui n'était pas trop au top.

Je m'occupe durant les jours qui viennent d''en faire une copie exploitable par autrui et je vous le fournirais sur le forum si vous voulez...


medium69
WRInaute passionné
WRInaute passionné
 
Messages: 2485
Inscription: 7 Mai 2005

Message le Sam Juil 15, 2006 9:24

j'ai mis le script en question ici : http://www.webrankinfo.com/forums/viewtopic_55674.htm


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité