2010-10-05 5 views
1

Je suis en train de créer un service de recherche pour mon site PHP et je me demandais comment les autres ont intelligemment analysé les termes de recherche basés sur des guillemets (et éventuellement d'autres symboles) .Analyser intelligemment les termes de recherche d'utilisateur en PHP

En d'autres termes, le terme de recherche marteau tournevis pourrait produire un tableau de [ « tournevis », « marteau »], mais marteau « à tête plate de screedriver » pourrait donner [ « un tournevis à tête plate », « marteau »] . Je sais que je peux accomplir cela dans une boucle bâclée, mais je suis sûr que PHP a quelque chose de construit pour gérer cela.

+1

Que faites-vous avec ces mots-clés? Les transmettez-vous à mySQL? –

+1

Possible duplicate: http://stackoverflow.com/questions/3811519 – Gumbo

+0

Je vais les traduire en une requête de base de données MSSQL (TSQL). Et je ne duplique pas. Mais merci pour le lien utile :) si vous l'aviez posté comme réponse, vous auriez gagné. Déjà implémenté. – Dutchie432

Répondre

1

Essayez d'utiliser preg_split

Quelque chose comme:

/* $search_term: 
* "flathead screwdriver" hammer -nails 
*/ 

$terms = preg_split("/[\s]*\\\"([^\\\"]+)\\\"[\s]*|[\s]+/", $search_term); 

/* $terms = array(
*  0 => "flathead screwdriver" 
*  1 => "hammer" 
*  2 => "-nails" 
*/ 

$exclude = array(); 

foreach($terms as $term){ 
    if(strpos($term, '-') == 0) 
     array_push($exclude, substr($term, 1)); 
} 

/* $exclude = array(
*  0 => "nails" 
*/ 

La seule chose que je ne comprend pas "enlève les clous" du tableau termes $. Je vais laisser cela comme un exercice pour le lecteur =)

Questions connexes