What are common methods for creating routing in PHP for user-friendly URLs?

When creating user-friendly URLs in PHP, one common method is to use a router to map URLs to specific controller actions. This allows for cleaner and more readable URLs for users to navigate your website. By defining routes in your PHP application, you can easily direct incoming requests to the appropriate controller or handler.

// Define routes in your PHP application
$routes = [
    '/about' => 'AboutController@index',
    '/contact' => 'ContactController@index',
    '/post/{id}' => 'PostController@show'
];

// Get the current URL
$currentUrl = $_SERVER['REQUEST_URI'];

// Match the current URL to a defined route
foreach($routes as $route => $controller) {
    $pattern = preg_replace('/\//', '\\/', $route);
    $pattern = preg_replace('/\{([a-z]+)\}/', '(?P<\1>[a-zA-Z0-9-]+)', $pattern);
    if(preg_match('/^' . $pattern . '$/', $currentUrl, $matches)) {
        $controllerParts = explode('@', $controller);
        $controllerName = $controllerParts[0];
        $methodName = $controllerParts[1];
        
        // Call the controller method with any matched parameters
        $controllerInstance = new $controllerName();
        $controllerInstance->$methodName($matches);
        break;
    }
}