Récupérer la phrase complète contenant le mot recherché - PHP - Programmation
Marsh Posté le 30-12-2003 à 17:52:14
une fois que t'as ton résultat, en PHP, tu recherches la position de la chaîne recherchée. Ensuite, tu prends x caractères avant et x caractères après. Tu peux améliorer l'algo pour rechercher les espaces, mais ça devient chaud à faire.
J'avais fait ça en ASP, et j'avoue que j'ai bien galèré pour obtenir un truc qui tienne la route...
Marsh Posté le 31-12-2003 à 09:29:09
fabien a écrit : avec une expression reguliere c plus simple... |
tu pourrais dévellopper ??
Marsh Posté le 31-12-2003 à 13:31:29
J'ai pas tout compris à ta question quand même ...
Si tu fais un "select id from" il ne te recupere que l'id non ?
Le texte que tu veux récuperer il est où ? Dans le champs field ?
Tu ne peux pas plutot faire SELECT id,field FROM 'tablo' WHERE field LIKE '%str%' ?
Enfin je dis ça, mais j'ai pas très bien compris ce que tu cherches à faire exactement
++
Marsh Posté le 31-12-2003 à 14:01:39
en fait, je récupère exactement ça :
Code :
|
Et ce que je veux c'est chopper les mots qui encadrent le mot 'menu', histoire de remettre menu dans le contexte, pour qu'il ne soit pas pris pour un autre comme par exemple le mot 'menuet' qui répond aux critères de recherche, mais qui ne correspond pas trop
Marsh Posté le 31-12-2003 à 14:09:11
xkamui a écrit : en fait, je récupère exactement ça :
|
en php regarde les fonctions comme preg_match http://fr.php.net/preg_match
Marsh Posté le 31-12-2003 à 14:25:46
Je viens de regarder preg_match... et je t'avoue que je comprend pas tout...
Je vois qu'il faut que je lui donne un 'pattern' du type
'([a-zA-Z0-9]) ([a-zA-Z0-9]) ".$string." ([a-zA-Z0-9]) ([a-zA-Z0-9])' pour qu'il me prenne les deux chaines de caractères qui précédent et qui suivent...
mais c'est de l'afficher que je saisi pas...
j'ai fait ça, sans grande conviction :
Code :
|
et il se trouve que ça ne m'écrit que :
Code :
|
Marsh Posté le 31-12-2003 à 15:26:22
si je crois comprendre ce que tu me dis, c'est de rechercher avec preg_match si l'occurence est présente dans mon texte...
Cependant, elle est forcément présente, puisqu'elle à été sélectionnée avec ma condition de recherche...
donc en faite, ce qu'il me faudrait c'est 'juste' les 4 mots qui l'encadre...
je devient fou
Marsh Posté le 31-12-2003 à 15:43:48
xkamui a écrit : si je crois comprendre ce que tu me dis, c'est de rechercher avec preg_match si l'occurence est présente dans mon texte... |
essaye avec la fonction ereg(), ou bien une façon bourin, tu utilise explode() avec comme separateur ton mot.
Marsh Posté le 31-12-2003 à 15:53:04
fabien a écrit : essaye avec la fonction ereg(), ou bien une façon bourin, tu utilise explode() avec comme separateur ton mot. |
Je suppose que c'est du grand n'importe quoi ça :
$affichage = ereg((.*)(.{10})(son_mot)(.{10})(.*),$toutletexte,\\2\\3\\4);
echo $affichage;
J'ai un peu oublié comment marchait les expressions regulieres depuis hier ...
Les trucs de base je me debrouille, mais des que ca devient compliqué ...
Marsh Posté le 31-12-2003 à 15:57:32
Euh, je crois que c'est plutot ça en fait :
ereg((.*)(.{10})(son_mot)(.{10})(.*),$toutletexte,$affichage);
echo $affichage[2].$affichage[3].$affichage[4];
non ?
Marsh Posté le 31-12-2003 à 16:14:27
D'ailleurs (on voit que je suis pas expert hein ?) cela suffit peut etre :
ereg((.{10})(le_mot)(.{10}),$toutletexte,$aff);
echo $aff[1].$aff[2].$aff[3];
$toutletexte etant la valeur récuperée dans ta colonne "texte" de ta BDD.
++
Marsh Posté le 31-12-2003 à 16:19:59
Dj YeLL a écrit : D'ailleurs (on voit que je suis pas expert hein ?) cela suffit peut etre : |
et puis pourquoi tu limite a 10 caracteres ?
Marsh Posté le 31-12-2003 à 16:22:07
Citation : tu sais que la fonction "edit" existe ? |
Oui, désolé
Citation : et puis pourquoi tu limite a 10 caracteres ? |
Bah parcequ'il a dit qu'il voulait un peu avant et un peu apres ...
Mais sinon c'est pas bon ? Plus dans la forme que dans le fond
Marsh Posté le 30-12-2003 à 17:48:41
Je fait un rechercher via un formulaire dans un champ blob de ma table 'tablo'.
Lorsque mon string 'str' est trouvé dans mon champ 'field' de ma table 'tablo', par cette requête :
J'aimerais qu'il me retourne les mots qui se trouvent avant et après la réponse... comment que je peux faire ??
Message édité par xkamui le 31-12-2003 à 11:54:18