[PHP] Scannez un texte pour mettre des liens sur certains mots ???

Scannez un texte pour mettre des liens sur certains mots ??? [PHP] - Programmation

Marsh Posté le 19-02-2002 à 11:47:31    

Bonjour à tous !
 
Voilà mon soucis du jour :) J'ai un texte avec des mots qui reviennent parfois et dont j'ai le nom et l'url dans une base de données... Je voudrais, qu'en affichant le texte, les liens se mettent automatiquement sur les mots...
 
Exemple : Pour toutes vos recherches sur Internet, vous pouvez.... blablabla
 
Là il y aurait un lien vers www.google.fr sur le mot recherche...
 
Pouvez vous me donner des infos ou me dire où en trouver ?


---------------
[:idee] Tu t'ennuies ? www.pagepardefaut.com : jeux online, anims flash et sites insolites...
Reply

Marsh Posté le 19-02-2002 à 11:47:31   

Reply

Marsh Posté le 19-02-2002 à 13:53:57    

:bounce: c'est si dur ? vous me faites peur là :(


---------------
[:idee] Tu t'ennuies ? www.pagepardefaut.com : jeux online, anims flash et sites insolites...
Reply

Marsh Posté le 19-02-2002 à 13:57:04    

Si tu connais les expressions régulières, y'a : http://www.php.net/manual/fr/function.preg-replace.php


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 19-02-2002 à 13:57:37    

fait une regexp (et une recherche  :D )


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 19-02-2002 à 14:05:04    

dans ma boîte, c'est un "compléteur" qui doit faire ça (c'est un morceau de mon prochain projet). un soft Java qui parse un flux XML (mais texte c'est OK too) et quand il rencontre un mot clé (existant dans une liste de mots) il va chercher des zinfos dans une base de données et crée un élément <keyword> avec ses attributs entourant le mot clé.
 
c'est en cours de design, et je m'oriente en effet vers un moteur de regexp en Java (je vais me mettre à chercher dans l'open source si il n'y a pas une lib de faite...)
 
je reste à l'écoute si on te propose d'autres soluces ;)

Reply

Marsh Posté le 19-02-2002 à 14:08:43    

oh la !!! Moi qui pensait que c'était tout bête :(  
 
Je suis un peu déçu là.. Je vais me mettre la dessus quand même mais j'ai très peur de pas avoir le niveau...


---------------
[:idee] Tu t'ennuies ? www.pagepardefaut.com : jeux online, anims flash et sites insolites...
Reply

Marsh Posté le 19-02-2002 à 14:13:36    

fonctionnelement c'est pas super compliqué... tu trouves une chaîne et tu la remplaces par une autre... maintenant, en PHP... j'ai jamais fait, regarde ce qui existe sur sourceforge non?

Reply

Marsh Posté le 19-02-2002 à 14:23:26    

thekeke2 a écrit a écrit :

oh la !!! Moi qui pensait que c'était tout bête :(


c'est tout bête, à une condition : qu'un mot clé ne fasse jamais partie d'une url.
 
ton code devrait ressembler à  
 
$texte = le texte à remplacer
 
while ($row = mysql_fetch_array($result))
{
  $texte = str_replace($row['keyword'], $row['link'], $texte);
}
 
où  
 
$row['keyword'] = 'Google'
 
et
 
$row['link'] = "<a href='http://www.google.com'>Google</a>"
 
désavantage de la méthode : Google sera remplacé, mais pas google ni GOOGLE (str_replace étant case sensitive). pour ça tu peux utiliser une expression régulière (juste pour chercher en case insensitive, c'est simple).
 
tu peux commencer avec de bêtes str_replace puis switcher aux expressions régulières quand ta première version marchera.

Reply

Marsh Posté le 19-02-2002 à 14:25:06    

hmmm, ce serait mieux de faire :
 
while ($row = mysql_fetch_array($result))  
{  
 $texte = str_replace($row['keyword'], "<a href='" . $row['link'] . "'>" . $row['keyword'] . '</a>', $texte);  
}  
 
où  
 
$row['keyword'] = 'Google'  
 
et  
 
$row['link'] = "http://www.google.com"

Reply

Marsh Posté le 19-02-2002 à 14:30:50    

T'en fais pas.
Quand tu aurras compris les regexp, tu serras trop content d'avoir appris un truc aussi puissant !
 
Exemple simple :  
http://www.surleau.com/temp/regexp.php
 
Il ne te reste plus qu'a construire les tableaux avec le contenu de ta base.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 19-02-2002 à 14:30:50   

Reply

Marsh Posté le 20-02-2002 à 12:08:19    

Mara's dad a écrit a écrit :

T'en fais pas.
Quand tu aurras compris les regexp, tu serras trop content d'avoir appris un truc aussi puissant !
 
Exemple simple :  
http://www.surleau.com/temp/regexp.php
 
Il ne te reste plus qu'a construire les tableaux avec le contenu de ta base.  




 
ah oui je vois (merci pour les autres du dessus aussi)...
 
En fait moi c 'est un chouilla diférent mais très proche de ce dernier exemple puisque les mots et les url sont dans une table...


---------------
[:idee] Tu t'ennuies ? www.pagepardefaut.com : jeux online, anims flash et sites insolites...
Reply

Marsh Posté le 22-02-2002 à 12:42:42    

Mara's dad a écrit a écrit :

T'en fais pas.
Quand tu aurras compris les regexp, tu serras trop content d'avoir appris un truc aussi puissant !
 
Exemple simple :  
http://www.surleau.com/temp/regexp.php
 
Il ne te reste plus qu'a construire les tableaux avec le contenu de ta base.  




 
Merci :)
 
Oui il me reste a comprendre comment reconstruire les array a partir des resultats de la BDD ... Tout un travail :) (je suis encore débutant :) ...)
 
Par contre dans : "/recherche/si", que veut dire le "si" ???


---------------
[:idee] Tu t'ennuies ? www.pagepardefaut.com : jeux online, anims flash et sites insolites...
Reply

Marsh Posté le 22-02-2002 à 14:35:40    

/.../ c'est pour délimiter une regexp.
i, c'est pour dire de ne pas faire la différence entre minuscules et majuscules.
s, C'est pour indiquer que le point "." remplace n'importe quel caractère (ce qui n'est pas util dans ton cas, mais comme je ne connais pas encore trop les regexp, çà vient d'un exemple que j'ai recopié un peut bètement !)
 
Docs :
http://www.php.net/manual/fr/pcre. [...] ifiers.php
http://www.php.net/manual/fr/ref.pcre.php


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 23-02-2002 à 02:04:35    

Mara's dad a écrit a écrit :

/.../ c'est pour délimiter une regexp.
i, c'est pour dire de ne pas faire la différence entre minuscules et majuscules.
s, C'est pour indiquer que le point "." remplace n'importe quel caractère (ce qui n'est pas util dans ton cas, mais comme je ne connais pas encore trop les regexp, çà vient d'un exemple que j'ai recopié un peut bètement !)
 
Docs :
http://www.php.net/manual/fr/pcre. [...] ifiers.php
http://www.php.net/manual/fr/ref.pcre.php  




 
Pour l'option 's', ce n'est pas exactement ça.
Le point remplace par défaut n'importe quel caractère, SAUF les retours chariots. L'option 's' permet justement de prendre en compte les retours chariots, pour par exemple faire une expression régulière qui doit matcher plusieurs lignes.

Reply

Marsh Posté le 28-02-2002 à 15:31:29    

:cry:  
 
j'y arrive pas :(
 
C'est vachement plus dur que l'exemple si dessus quand on a a faire appel a une table pour le texte ET pour les definitions...
 
Je repete mon probleme pour les absents ou les interessés :
 
Bonjour,  
 
 
j'ai un texte (contenu dans une BDD) et je voudrais l'intégrer dans une page HTML (simple pour le moment) mais également que ce texte soit "scanné" à la recherche des mots contenus dans une table avec leur définition.
Si un mot du texte est dans cette table des définitions alors le mot deviendra cliquables et fait apparaitre une popup dhtml avec la definition associées (ca je sais faire)...
 
Mon probleme donc : comment faire pour que ce texte dynamique soit scanné à la recherche des mots présent dans l autre table ?
Je tourne en rond depuis 2 jours :(


---------------
[:idee] Tu t'ennuies ? www.pagepardefaut.com : jeux online, anims flash et sites insolites...
Reply

Marsh Posté le 28-02-2002 à 17:23:32    

Ca marche :)
 
J'ai reussi... Par contre il ne prend pas en compte le premier et le dernier mot de mon texte... Je rêgle le problème et je mettrais le code ici pour les personnes interessees...


---------------
[:idee] Tu t'ennuies ? www.pagepardefaut.com : jeux online, anims flash et sites insolites...
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed