Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

4. Parameter Patterns

İzni Burak Demirtaş edited this page May 10, 2021 · 4 revisions

The patterns defined in PHP-Router are:

  • :all => All characters
  • :any => All chars without '/' char
  • :id => Natural numbers (0, 1, 17, 167, 1881, 20956...)
  • :number => Real numbers (1, -1.2, 5.5 ...)
  • :float => Real numbers
  • :bool => Boolean values. (true, false, 1, 0)
  • :string => Alphanumeric characters
  • :slug => URL format characters for SEO. (Alphanumeric characters, _ and -)
  • :uuid => UUID
  • :date => Y-m-d format date string

single pattern

$router->get('/hello/:string', function($value) {
 echo "Hello, {$value}";
});
# Output:
# /hello/burak ---> Hello, burak
# /hello/php ---> Hello, php
# /hello/ ---> Error!!!

multi pattern

$router->get('/post/:id/:slug', function($id, $slug) {
 echo "Post ID: {$id} <br />";
 echo "Post Slug: {$slug}";
});
# Output:
# /post/5/hello-world ---> Post ID: 5 <br />Post Slug: hello-world
# /post/17/php-router ---> Post ID: 17 <br />Post Slug: php-router
# /post/foo/bar ---> Error!!! (:id param must be digits.)

optional pattern - add default value

$router->get('/page/:slug?', function($page = 'home') {
 return "Page: {$page}";
});
# Output:
# /page/contact ---> Page: contact
# /page/about-us ---> Page: about-us
# /page ---> Page: home

custom pattern - create own pattern

$router->pattern(':lowercase', '[a-z]+');
$router->get('/demo/:lowercase', function($value) {
 return "Value: {$value}";
});
# Output:
# /demo/burak ---> Value: burak 
# /demo/php ---> Value: php
# /demo/Router ---> Error!!!

To define multiple patterns at once, you can use this method:

$patterns = [':lowcase' => '[a-z]+', ':upcase' => '[A-Z]+'];
$router->pattern($patterns);

Great! That's it. :)

Clone this wiki locally

AltStyle によって変換されたページ (->オリジナル) /