拆分网址的路径部分

时间:2011-03-01 19:10:53

标签: php zend-framework

我找不到任何东西,所以我只想拿一个网址,然后拆分它,把它变成关键值对。

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

我目前在使用parse_url

后在路径上使用array_chunk
$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 Framework方法?

3 个答案:

答案 0 :(得分: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来检查设置了哪些键。

答案 1 :(得分: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
)

答案 2 :(得分:0)

如果您在控制器中,则只需

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

$ data现在将

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

希望你也不是POST变量,或者这也包括POST'd变量。