Expression régulière pour moteur de recherche...

Expression régulière pour moteur de recherche... - PHP - Programmation

Marsh Posté le 30-08-2007 à 15:21:27    

'lo... [:dawa]
 
Suis en train de me débattre avé un moteur de recherche en PHP, histoire que la chaîne de recherche entrée par l'utilisateur voie tous ses termes sagement balancés dans un array...
... oui mais voilà, une suite de mots entrée entre guillemets doubles ne doit compter que comme UN terme...
 
Exemple de ce que tape l'utilisateur :
parthénogenèse poulpes "Cocotta deconnans deconnans"
 
Faudrait que j'obtienne un array à 3 valeurs : 1/parthénogenèse, 2/ poulpes, 3/ "Cocotta deconnans deconnans"
 
J'ai zieuté du côté de preg_split (mais je vois pas comment faire ça en une seule passe), et avec preg_match_all je me coltine des erreurs "] Unknown delimiter" :heink:
 
exemple :

preg_match_all("|\"[^\"]+\"|[^\s\"]+|U", $recherche, $termes);


 
Quelqu'un aurait une idée de génie ? j'ai l'impression de vouloir la lune :D

Reply

Marsh Posté le 30-08-2007 à 15:21:27   

Reply

Marsh Posté le 30-08-2007 à 15:50:44    

derrière c'est pour faire quoi? mettre ça dans une requete? sur quelle base?
 
Nan  parce que si c'est du mysql tu ferais mieux de faire un match against et de pas t'ennuyer.

Reply

Marsh Posté le 30-08-2007 à 16:06:14    

anapajari a écrit :

derrière c'est pour faire quoi? mettre ça dans une requete? sur quelle base?
 
Nan  parce que si c'est du mysql tu ferais mieux de faire un match against et de pas t'ennuyer.


Oui, mais en cas de 0 résultat, faut pouvoir faire des recherches sur chaque élément séparément, donc ça revient au même au final :D

Reply

Marsh Posté le 30-08-2007 à 16:39:22    

euh ... naaaan :)
 
tu fais

Code :
  1. SELECT
  2. ...
  3. WHERE (tonChamps) match against ('parthénogenèse poulpes "Cocotta deconnans deconnans"' IN BOOLEAN mode)


ça va te remonter les résultats qui contiennent au moins une des expressions, tout en triant celles qui en contiennent le plus en premier.
 
Voir la doc: http://dev.mysql.com/doc/refman/5. [...] olean.html

Reply

Marsh Posté le 30-08-2007 à 17:38:13    

OK donc c la merde, pas moyen de faire pile ce qu'il me fallait...
Tant pis, merci :jap:

Reply

Marsh Posté le 30-08-2007 à 20:15:05    

La technique à utiliser c'est d'utiliser preg_match en mode ungreedy (dégloutonné) sur un masque très simple, par exemple : '/"(.*)"/U'

Reply

Sujets relatifs:

Leave a Replay

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