Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
php-regex-router.php
<?php
// dangerously simple PHP regular expression URL router
// requires a mod_rewrite like "RewriteRule . /index.php [L]"
function get($url, $callback) {
$matches = array();
if (preg_match('~' . $url . '~', $_SERVER['REQUEST_URI'], $matches)) {
echo call_user_func_array($callback, $matches);
die();
}
}
get('foo', function($url) {
return 'you got foo';
});
get('bar([\d])', function($url, $digit) {
return 'bar number ' . $digit;
});
get('.*', function() {
return 'catch all. try /foo or /bar[0-9]';
});
@kayode-suc

This comment has been minimized.

Copy link

@kayode-suc kayode-suc commented Oct 19, 2020

to get rid of the first argument $url in the callback function, remove the first element in the array $matches using array_shift() function

function get($url, $callback) {
	$matches = array();
	if (preg_match('~' . $url . '~', $_SERVER['REQUEST_URI'], $matches)) {
                array_shift($url);
		return call_user_func_array($callback, $matches);
	}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment