Ahh ... named patterns, how extremely ugly :-)

$date = "/2007/08/06";
preg_match("/(?P<year>[0-9]{4})\/(?P<month>[0-9]{2})\/(?P<day>[0-9] {2})/", $date, $match);
print_r($match);

- Jon

On Aug 6, 2007, at 9:56 PM, csnyder wrote:

On 8/6/07, Michael B Allen <[EMAIL PROTECTED]> wrote:
Hey,

It so happens I'm working on a CMS component and the 'Many pages one
script' discussion has inspired me to add mod_rewrite capability. I
have a catch-all RewriteRule that just sends everything through
index.php at the top of which I have a "handler table" that maps the
REQUEST_URI to a handler class. I'm using preg_match to do the match
and collect the parameters.

So an example regex looks like:

  '@/news/([0-9]+)/([0-9]+)/([0-9]+)@'

This works fine with REQUEST_URIs like:

  /news/2007/10/31

but it does not match any of the following:

  /news/2007/10
  /news/2007
  /news

I would like to match these. For example, if the day parameter is not
provided the match array returned by preg_match should simply have one
fewer elements.

So how does one designate parts of a preg_match expression as optional?

Mike

How optional? Why use preg_match at all?

list( $app, $year, $month, $day ) = explode( '/', $uri );


--
Chris Snyder
http://chxo.com/
_______________________________________________
New York PHP Community Talk Mailing List
http://lists.nyphp.org/mailman/listinfo/talk

NYPHPCon 2006 Presentations Online
http://www.nyphpcon.com

Show Your Participation in New York PHP
http://www.nyphp.org/show_participation.php

_______________________________________________
New York PHP Community Talk Mailing List
http://lists.nyphp.org/mailman/listinfo/talk

NYPHPCon 2006 Presentations Online
http://www.nyphpcon.com

Show Your Participation in New York PHP
http://www.nyphp.org/show_participation.php

Reply via email to