2010-11-16 8 views
3

Je dois améliorer la fonctionnalité de recherche sur une page répertoriant les comptes d'utilisateurs. Plutôt que d'avoir plusieurs zones de recherche pour chaque champ possible, ou un menu déroulant où l'utilisateur ne peut effectuer une recherche que sur un seul champ, je voudrais utiliser un seul champ de recherche et utiliser une syntaxe semblable à celle de Gmail. C'est la meilleure façon que je peux le décrire, et ce que je veux dire par une gmail comme la syntaxe de recherche est capable de taper la commande suivante dans la zone de saisie:Besoin de créer une syntaxe de recherche similaire à gmail; peut-être en utilisant des expressions régulières?

Nom d'utilisateur: Type bbaggins: admin « composé plc »

Lorsque le formulaire est soumis, la chaîne de recherche doit être divisée en parties séparées, ce qui me permettra de construire une requête SQL. Ainsi, par exemple, le type : admin ferait partie de la clause WHERE afin qu'il trouverait tout dossier où le champ de type est égal à admin et la même chose pour le nom d'utilisateur . Le texte entre guillemets peut être une recherche de texte libre, mais je n'en suis pas encore sûr.

Je pense qu'une expression régulière ou deux serait la meilleure façon de le faire, mais c'est quelque chose que je ne suis vraiment pas bon. Quelqu'un peut-il aider à construire une expression régulière qui pourrait être utilisée à cette fin? J'ai cherché autour de quelques pointeurs mais je ne sais pas quoi chercher ou ce n'est pas là parce que je n'ai rien trouvé d'évident. Peut-être que si je comprends mieux les expressions régulières, il serait plus facile :-)

Cheers,

Adam

+1

+1 pour _bbaggins_: P –

+0

@ Matt balle: Si je l'avais su rep était si facile à obtenir que j'aurais travaillé beaucoup plus dur sur l'aspect du SdA dans mes propres questions. ;) – Robusto

+0

@Robusto: Note à moi-même, mes questions ont besoin de plus de SdA (donc je peux me remettre moi-même, bien sûr). Peut-être le prochain mème SO? "-1, a besoin de plus de balrog" –

Répondre

1

Non, vous n'utiliser des expressions régulières pour cela. Il suffit de diviser la chaîne sur les espaces dans la langue que vous utilisez.

1

Vous n'avez pas nécessairement à utiliser une regex. Les regex sont puissants, mais dans de nombreux cas, ils sont également lents. Regex aussi does not handle nested parameters very well. Il serait plus facile pour vous d'écrire un script qui utilise la manipulation de chaînes pour diviser la chaîne et extraire les mots-clés et les noms de champs.

Si vous voulez expérimenter avec Regex, essayez le REGex tester en ligne. Trouver un tutoriel et jouer autour, c'est amusant, et vous devriez être capable de produire rapidement des expressions rationnelles qui trouvent des mots avant ou après un caractère :, ou des phrases entre " des guillemets.

0

merci pour les réponses ... J'ai commencé à le faire sans regex et je me demandais juste si une regex serait plus simple. On dirait que ce ne serait pas le cas, alors je vais revenir à la façon dont je le faisais et le tester à nouveau.

bon vieux M. Bilbo est mon gars pour aller à toute nomination a besoin :-)

Cheers,

Adam