adlı dizilimi içeren regex dizesinden url oluşturmak

0 Cevap php

İşte ben şu anda kullanıyorum match_url fonksiyonu

function match_url($urls,$url) {
    foreach($urls as $regex=>$args) {
        $r = str_replace('/','\/',$regex);
        preg_match("/$r/i",$url,$matches);
        if(count($matches) > 0) {
            $dispatch = array();
            $args['args'] = array();
            if(empty($args) && !empty($matches['controller'])) {
                $dispatch['controller'] = $matches['controller'];
                $dispatch['action'] = $matches['action'];
            } else {
                foreach($matches as $k=>$v) {
                    if(is_string($k)) {
                        $args['args'][$k] = $v;
                    }
                }
                $dispatch = $args;
            }

            return $dispatch;
        }
    }
}

İşte bazı örnek $ adresler vardır

$urls = array(
    'articles/(?P<year>\d{4})' => array('controller'=>'articles','action'=>'show','name'=>'article_view'),
    'admin/(?P<controller>[-\w]+)/(?P<action>[-\w]+)' => array(),
    '(?P<controller>[-\w]+)/(?P<action>[-\w]+)' => array()
);

Aşağıdaki url articles/2010 gibi bir dizi döndürür:

Array
(
[controller] => articles
[action] => show
[name] => article_view
[args] => Array
(
[year] => 2010
)

)

Bekleniyor ama şimdi bana verilen url isim ve args bir url inşa sağlayacak bir işlev oluşturmak isteyen am gibi çalışır. Örneğin:

$name = "article_view";
$args = array("year"=>2010);
echo url_for($name,$args);
//should output articles/2010

Ben ile sorun yaşıyorum bölüm I geçti argümanlarla url regex gelen değişkenleri değiştirebilirsiniz nasıl sergiyi olduğunu.

Bunu yapmanın basit bir yöntem var mı?

Doğru yönde herhangi bir öneri veya işaretçiler olurdu.

0 Cevap