rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

[php] faire des recherches dans un texte

maure, le mardi 15 novembre 2005 à 11:01:15
Bonjour,

je cherche des fonctions php qui permettent de faire une recherche(par mot clé) avancé sur un texte ...

Merci d'avance
Répondre à maure  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Zep3k!GnO, le mardi 15 novembre 2005 à 16:53:49
je pense que la fonction ereg()
http://www.nexen.net/docs/php/annotee/function.ereg.php

ainsi que des bonnes expression réguilères devraient faire l'affaire...

Voilà ! :P

Zep3k!GnO
-->kurtis jackson:"Dans la vie tu as besoin de 3 choses : le fitness, l'aérobic et moi."
Répondre à Zep3k!GnO

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
maure, le mardi 15 novembre 2005 à 17:50:14
Merci pour ton aide,

Effectivement les exp reg est une bonne idée je vais voir ce que je peux faire avec ...

Mais je pense pas qu'on peut compter les mots avec les exps regs??

par exemple dans mes docs j'aimerais faire les recherches suivantes

1) chercher les docs qui contient un mots(comme "etudiant", "prof")
2)chercher les docs qui contienent les mots "prof" et "faculté" séparer par au plus 3 mots (donc il faut compter)
4) ...

J'espére que j'étais assez claire.

Toute idée toutes reflexion sera le bienvenu.
Répondre à maure

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Zep3k!GnO, le mercredi 16 novembre 2005 à 10:17:16
2)chercher les docs qui contienent les mots "prof" et "faculté" séparer par au plus 3 mots (donc il faut compter)
4) ...

<reflexion>t'as loupé le 3) hi hi hi</reflexion>

bin moi j'ai une idée pour ce qui est de ton séparer par au plus 3 mots mais c'est p'tet pas la meilleure...

--> Tu fais ton ereg() , si il trouve quelque chose, tu refais une expression réguilière qui cherche par exemple ton mot prof avec une fois un espace, une fois 2 esapce une fois 3 espaces
je m'explique : (Expression régulière en PERL)
1 ere fois :" prof [^ ]+ faculte"      <--prof espace  suivi de tout sauf un espace jusqu'a qu'on ai un espace puis le mot faculté donc 1 mot entre les 2

2ème fois :" prof [^ ]+ [^ ]+ faculte"

2ème fois :" prof [^ ]+ [^ ]+ [^ ]+ faculte"


Bref imbriqué dans des if ... tu vois ce que je veux dire ?!

bon courage, tiens moi au courant ..

Zep3k!GnO
-->kurtis jackson:"Dans la vie tu as besoin de 3 choses : le fitness, l'aérobic et moi."
Répondre à Zep3k!GnO

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Zep3k!GnO, le mercredi 16 novembre 2005 à 10:36:11
2ème fois :" prof [^ ]+ [^ ]+ faculte"

2ème fois :" prof [^ ]+ [^ ]+ [^ ]+ faculte"


3ème on s'était compris ^^

Zep3k!GnO
-->kurtis jackson:"Dans la vie tu as besoin de 3 choses : le fitness, l'aérobic et moi."
Répondre à Zep3k!GnO

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
GallyNet, le mercredi 16 novembre 2005 à 10:44:33
Et apres il se permet de faire une remarque sur l'absence de 3eme cas. ;-)

Sinon, il serait peu être possible de faire comme ca :
" (prof|faculte) [^ ]+ [^ ]+ (prof|faculte)"

Ainsi on ne cherche pas forcément avec prof en premier et faculté en dernier.
Par contre on cherchera :
faculté - deux mots - prof
prof - deux mots - faculté
faculté - deux mots - faculté
prof - deux mots - prof
Répondre à GallyNet

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
maure, le mercredi 16 novembre 2005 à 11:43:37
Merci pour tes réponses,

Ce que tu me prepose ca va dans le sens de ce que je cherche, mais je pense que je n'ai pas été assez claire ...

En fait ce que je voudrait faire c'est de proposer un formulaire à l'utilisateur dans ce formulaire on peut taper une expression et je vais chercher dans ma BDD les docs qui contiennent cette expression ( comme à la google sauf que l'exp que l'usager va écrire peut être très compliquer)
Répondre à maure

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
GallyNet, le mercredi 16 novembre 2005 à 12:28:10
Tu recherche des documents dans une base de données ? Il sont enregistré comment dans la base dedonnées ? Le texte est entièrement dans la base de données ?
Si c'est le cas alors tu doit faire un truc du genre :
$mots=explode('',$expression);

$requete='SELECT * FROM mabase WHERE ';
foreach($mots as $value){
$requete.=' texte LIKE "%'.$value.'%" AND';
}
$requete.=' (1=1)';

Avec $expression correspondant à l'expression entrer par l'uilisateur.
La requete te permetra de retourner tout les texte qui ont tous les mots rechercher. Si tu remplace le AND par OR, tu aura tout les texte qui ont au moins un mots rechercher.

Inconvéniant : c'est assez lourd pour la base de données et la requete risque de prendre du temps.
Répondre à GallyNet

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
maure, le jeudi 17 novembre 2005 à 15:08:27
Merci pour vos réponses, Effectivement les docs sont entierement sur la base et votre requête réponds bien à des cas, mais il y'a d'autres cas ou cette requête est limitée exemple : chercher les docs qui contienent les mots "prof" et "faculté" séparer par au plus 3 mots (donc il faut compter???) ...

Sinon bien vu le fait de citer le pb du temps, car les traitements que je vais faire demandent de la rapidité ...

La discution reste ouverte si vous avez d'autres idées merci de les faire partager
Répondre à maure

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
GallyNet, le jeudi 17 novembre 2005 à 15:20:42
La méthode à la google reste encore de faire un champ mot clé pour chaque document, dans lequels il y a tout les mots important du document (on enleve : 'la', 'les', 'et', ..) et on fait la recherche seulement sur les mots clé.
Le temps de recherche est plus rapide mais il y toujours le probleme du comptage des mots.

A la limite il faudrait faire la recherche en deux temps :
1- recherhcer les documents possédant les mot rechercher
2- faire le comptage dans les documents trouvé lors de la phase 1
Répondre à GallyNet

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
maure, le jeudi 17 novembre 2005 à 16:28:06
Jj'aimerais juste savoir que veut dire la dernière partie de la requête ( $requete.=' (1=1)'; )??

merci encore,
Répondre à maure

11


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
GallyNet, le jeudi 17 novembre 2005 à 16:31:45
Quand je fait le foreach, je met AND à la fin de chaque ligne. Pour pas avoir une requete du genre :
SELECT *
FROM mabase
WHERE texte like 'prof AND
texte LIKE 'faculte' AND

je rajoute le '(1=1)' qui correspond a true, ainsi la requete reste corecte.

Pour le cas ou l'on met des OR, il faut mettre (1=0) => false
Répondre à GallyNet

12


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
kilian, le jeudi 17 novembre 2005 à 16:34:30
Tiens, c'est pas bête ça...

Et puis à priori tu peux même remplacer (1=1) par 1 et remplacer (1=0) par 0....
Répondre à kilian

13


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
GallyNet, le jeudi 17 novembre 2005 à 16:36:17
Oui c'est vrai que l'on peut faire plus simple, mais je trouve plus parlant le (1=1). Car on sait ainsi que la condition est vrai, alors que 1 est beaucoup moin parlant.
Répondre à GallyNet

14


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 kilian, le vendredi 18 novembre 2005 à 23:33:30
C'est vrai.
Répondre à kilian
Logiciels pertinents trouvés dans les téléchargements
Télécharger TextWrangler 2.2.1TextWrangler - TextWrangler est un éditeur de texte évolué. Il propose de nombreuses fonctionnalités : recherche/remplacement...Catégorie: Traitement de texte
Licence: Freeware/gratuit
Télécharger PHP Edit 0.6PHP Edit - PHPEdit est un environnement de développement intégré (IDE) sous Windows pour le langage PHP. Il offre un grand nombre de...Catégorie: PHP
Licence: Freeware/gratuit
Télécharger PSPad 4.5.2PSPad - PSPad est un excellent éditeur de texte. Il est utile pour travailler sur du simple texte, mais aussi sur du HTML, CSS,...Catégorie: Développement
Licence: Freeware/gratuit
Télécharger Texter  0.6 Texter - Texter est une véritable révolution dans le monde la saisie ! Texter vous permet de gagner du temps lors de la frappe tout...Catégorie: Bureautique
Licence: Freeware/gratuit
Plus de logiciels gratuits sur « [php] faire des recherches dans un texte »