2011-03-01 129 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变量。