Advertisement
Google Ad Slot: content-top
Zend Regex Route
What is a Regex Route?
A Regex Route allows you to define highly customized and flexible URL patterns using regular expressions. This is helpful when standard route types like Literal or Segment are too limited.
Use Case Examples:
Use Case |
Regex Pattern |
Acceptable URL(s) |
|---|---|---|
Username profile |
/user/(?<username>[a-zA-Z0-9_-]+) |
/user/john_doe, /user/John123 |
Product by code |
/product/(?<code>[A-Z]{3}-[0-9]{4}) |
/product/ABC-1234, /product/XYZ-0001 |
Archive by date |
/archive/(?<year>[0-9]{4})/(?<month>[0-9]{2}) |
/archive/2023/07, /archive/2025/12 |
Slug with dots |
/docs/(?<slug>[a-z0-9\.-]+) |
/docs/html.basics, /docs/css.advanced |
Full Example
Step 1: Route Configuration (module/Application/config/module.config.php)
use Application\Controller\MainController;
'router' => [
'routes' => [
'archive' => [
'type' => \Laminas\Router\Http\Regex::class,
'options' => [
'regex' => '/archive/(?<year>[0-9]{4})/(?<month>[0-9]{2})',
'defaults' => [
'controller' => MainController::class,
'action' => 'show',
],
'spec' => '/archive/%year%/%month%',
],
],
],
],
Step 2: Controller Setup (module\Application\src\Controller\MainController.php)
namespace Application\Controller;
use Laminas\Mvc\Controller\AbstractActionController;
use Laminas\View\Model\ViewModel;
class MainController extends AbstractActionController
{
public function showAction()
{
$year = $this->params()->fromRoute('year');
$month = $this->params()->fromRoute('month');
return new ViewModel([
'year' => $year,
'month' => $month,
]);
}
}
Step 3: View File (view/application/main/show.phtml)
<h2>Archive Page</h2> <p>Year: <?= $this->escapeHtml($year) ?></p> <p>Month: <?= $this->escapeHtml($month) ?></p>
Access in Browser
URL |
Matched Action |
Output |
|---|---|---|
/archive/2024/07 |
showAction() |
Year: 2024 Month: 07 |
/archive/1999/12 |
showAction() |
Year: 1999 Month: 12 |