2011-03-01 131 views
1

我找不到任何東西,所以我只想取一個網址,然後將其拆分並將其變爲關鍵值對。拆分url的路徑部分

$url = 'http://domain.com/var/1/var2/2'; 

我目前使用的路徑上的array_chunk使用parse_url

$u = parse_url($url); 
$decoded = array_chunk($u['path'],2); 

之後,但它返回

array (
    [0] => array (
     [0] => var 
     [1] => 1 
    ), 
    [1] => array (
     [0] => var2 
     [1] => 2 
    ) 
) 

我想什麼是

array (
    [var] => 1, 
    [var2] => 2 
) 

是有一個Zend框架方法可用於解碼成數組?

+1

可能是重複的http://stackoverflow.com/questions/2458539/how-to-parse-a-zend-url-for-parameters – akond 2011-03-01 19:17:41

+0

@akond是的,你是正確的! #winning!是的,我用$ route = Zend_Controller_Front :: getInstance() - > getRouter() - > getCurrentRoute(); $ params = $ route-> match($ url); – 2011-03-04 17:35:21

回答

5

我最好使用請求對象。

$url = 'http://domain.com/var/1/var2/2'; 
$request = new Zend_Controller_Request_Http($url); 
$params = $request->getParams(); 
// or 
$param = $request->getParam('var', $defaultValueNull); 

這樣做的好處,你不必使用isset檢查設置了哪個鍵。

0
$u = parse_url($url); 
$decoded = array_chunk($u['path'],2); 
$new = array(); 
for ($decoded as $pair) { 
    $new[$pair[0]] = $pair[1]; 
} 
print_r($new); 

輸出

array (
    [var] => 1, 
    [var2] => 2 
) 
+0

我想你的意思是'$ new [$ pair [0]] = $ pair [1];' – Michael 2011-03-01 19:21:15

+0

'$ new [$ pair [0]]' – hsz 2011-03-01 19:21:47

0

如果您在控制器是它只是

$data = $this->_getAllParams(); 
unset($data['module'], $data['controller'], $data['action']); 

$數據現在將

array (
    [var] => 1, 
    [var] => 2 
) 

希望你不張貼變量以及或這也將包括POST'd變量。