I am trying to work out how to pop an optional group into a preg_replace_callback but I am having trouble matching the + character
Here is the code I have this far
$pattern=preg_replace_callback('~:(?P<_param>[Aa-zZ0-9_\-]+)(?:(P<_mod>[^/]))?~',
function($matches)
{
print_r($matches);
$key=$matches[1];
return '(?<'.$matches['_param'].'>'.$matches['_mod'].')';
}
,$subject);
This generates the following pattern
/category/(?<foo>)/(?<baz>.)+/(?<bar>.)+/(?<harry>.)+/foo
For the following string
/category/:foo/:baz.+/:bar.+/:harry.+/foo
As you can see it's carrying over the . but not the plus, essentially I would like it to carry (into the named _mod capture group) any modifier that I append to a :variable.
I am not very good at regex so I'm amazed to have gotten this far and any help on my quest would be greatly appreciated