URL Regex для PHP фреймворка - PullRequest
       12

URL Regex для PHP фреймворка

1 голос
/ 06 октября 2009

Я пытаюсь получить контроллер, метод и запросы из массива URL. Примерно так:

Главная / Новости / [день] / [месяц] / [пробкового] ​​/ '

Мне нужно регулярное выражение, которое даст мне следующее:

Контроллер: дом Метод: Новости Аргументы: день, месяц, слизняк

Для аргументов было бы неплохо, если бы я мог как-то получить имя в скобках, чтобы я мог поместить их в ассоциативный массив в PHP. например: ("день" => $ день).

Я действительно застрял с этим и попробовал посмотреть на несколько PHP-фреймворков для руководства, но на самом деле ничего не достигло именно того, что я хочу выше, особенно с помощью регулярных выражений.

Ответы [ 2 ]

3 голосов
/ 06 октября 2009
preg_match('{/home/news/(?<day>\d{1,2})/(?<month>\d{1,2})/(?<slug>[\w-]+)}',
           '/home/news/10/02/foo', 
           $matches);

$matches сейчас

array (
  0 => '/home/news/10/02/foo',
  'day' => '10',
  1 => '10',
  'month' => '02',
  2 => '02',
  'slug' => 'foo',
  3 => 'foo',
)
3 голосов
/ 06 октября 2009

Если вы всегда будете иметь /: controller /: method /: args, вы также можете использовать explode:

$args = explode('/', $url);
$controllerName = array_shift($args);
$method = array_shift($args);

$controller = new $controllerName;
$response = $controller->$method($args);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...