This code outputs the $captured
array, but $captured[1]
contains bar/this
rather than my expected bar
. What's missing in my regex to stop from returning more than bar
?
<?php
$pattern = '/foo/:any/';
$subject = '/foo/bar/this/that';
$pattern = str_replace(':any', '(.+)', $pattern);
$pattern = str_replace(':num', '([0-9]+)', $pattern);
$pattern = str_replace(':alpha', '([A-Za-z]+)', $pattern);
echo '<pre>';
$pattern = '#^' . $pattern . '#';
preg_match($pattern, $subject, $captured);
print_r($captured);
echo '</pre>';