PHP çerçevesinde URL Regex

2 Cevap php

Ben kontrolör, yöntemini ve bir URL diziden sorguları almaya çalışıyorum. Böyle bir şey:

'Home / news / [gün] / [ay] / [slug] /'

Bana aşağıdaki verecek bazı regex gerekir:

Controller: home Method: News Arguments: day, month, slug

PHP bir ilişkisel dizi içine koyabilirsiniz böylece ben bir şekilde parantez içinde adını alabilir argümanlar için, bu güzel olurdu. örneğin: ("gün" => $ gün).

Ben gerçekten bu ile sıkışmış ve rehberlik için çeşitli PHP çerçeveler bakarak çalıştım ama hiçbir şey gerçekten özellikle regex kullanarak, yukarıda tam olarak ne istediğini başarır ediyorum.

2 Cevap

preg_match('{/home/news/(?<day>\d{1,2})/(?<month>\d{1,2})/(?<slug>[\w-]+)}',
           '/home/news/10/02/foo', 
           $matches);

$matches şimdi

array (
  0 => '/home/news/10/02/foo',
  'day' => '10',
  1 => '10',
  'month' => '02',
  2 => '02',
  'slug' => 'foo',
  3 => 'foo',
)

Her zaman / var gidiyoruz: kontrolörü /: yöntemi /: args siz de patlayabilir kullanabilirsiniz:

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

$controller = new $controllerName;
$response = $controller->$method($args);