<?php
$routes = [
'/path/(\d+)/new/upload$',
'/path/selectable_ajax_placements/(\w+)/(\d+)',
'/path/anotherpath/to/(\d+)/from/([\d\-\_]+)/to/([\d\-\_]+)$',
'/path/list$',
];
foreach ($routes as $route) {
echo preg_replace_callback('#(?<=/)([^/]*?[^/a-z0-9_\-][^/]*)(?=/|$)#i', function($match) {
var_dump($match);
if (substr($match[1], -1) === '$' && preg_match('#^[a-z0-9_\-]+$#', $match[1])) {
return substr($match[1], 0, -1);
}
return '1';
}, $route), "\n";
}
preferences:
38.71 ms | 402 KiB | 5 Q