2010-11-10 7 views
0

J'ai une autre question lui a demandé sur Stack Overflow et a été suggéré d'utiliser des expressions régulières au lieu du code PHP. Malheureusement, je ne connais pas regexp, et j'ai essayé plusieurs fois dans le passé et maintenant de le comprendre sans succès. Si tout va bien, si je demande gentiment, quelqu'un ici pourrait aider. Je serais très reconnaissant. Ce que j'essaie de réaliser est donc d'acheminer différentes demandes d'URI vers des endroits différents, 4 pour être spécifiques. Quel serait un bon reg exp pour correspondre à ce qui suit:Expression régulière pour les modèles dans URI CodeIgniter

  • year (exemple: 2010)
  • year-month (exemple: 2010-nov) (le mois représenté par 3 caractères)
  • year-month-day (exemple: 2010-nov-10)
  • year-month-day-string (exemple: 2010-nov-10-blog-post-title-here)

Je code en PHP et utilise le framework CodeIgniter.

Cordialement, Jason

+0

Juste un indice: vous seriez plus facile si vos mois étaient des nombres au lieu de leurs abréviations. – slhck

+0

je vous entends. J'ai juste besoin qu'ils soient 3 caractères, je vais le valider à la prochaine étape. – Jason

Répondre

3

Puisque vous validez plus tard. vous pouvez aller vraiment générique:

([0-9]{4})-([a-z]{3})-([0-9]{1,2})-([\w*](-?[\w*])*)

4 année chiffres, un trait d'union, un mot minuscule 3 char, un trait d'union, deux chiffres, au moins un mot, (trait d'union et un autre mot répété au besoin.)

+0

fantastique! C'est exactement ce qu'il faut. tout fonctionne :) merci Hyposaurus! – Jason

1
  • Année est (19|20)\d\d.

  • Année mois est (19|20)\d\d\-[a-z]{3}

  • année mois jour est (19|20)\d\d\-[a-z]{3}\-[1-3][0-9]

  • -string année mois jour est (19|20)\d\d\-[a-z]{3}\-[1-3][0-9]\-[a-z\-]*

-moi si je me trompe , S'il vous plaît. Notez également qu'il n'y a pas de validation pour les noms de mois ou les dates qui n'existent pas réellement.

+0

merci, je suppose que je devrais l'avoir juste mis: 4digits dash 3chars dash 2digits dash string – Jason

+0

Voilà ce que cela se résume à;) – slhck

Questions connexes