【问题标题】:splitting up the path portion of a url拆分 url 的路径部分
【发布时间】:2011-03-01 19:10:53
【问题描述】:

我找不到任何东西,所以我只想获取一个 url,然后将其拆分并将其转换为键值对。

$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 方法可用于将其解码为数组?

【问题讨论】:

  • @akond 是的,你是对的! #中奖!是的,我使用了 $route = Zend_Controller_Front::getInstance() ->getRouter() ->getCurrentRoute(); $params = $route->match($url);

标签: php zend-framework


【解决方案1】:

我会使用请求对象。

$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 来检查设置了哪些键。

【讨论】:

    【解决方案2】:
    $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
    )
    

    【讨论】:

    • 我想你的意思是$new[$pair[0]] = $pair[1];
    【解决方案3】:

    如果你在控制器中,那很简单

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

    $data 现在将是

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

    希望您不要同时发布变量,否则这也将包括已发布的变量。

    【讨论】:

      猜你喜欢
      • 2016-02-02
      • 1970-01-01
      • 1970-01-01
      • 2011-05-24
      • 2011-12-15
      • 2014-10-27
      • 2011-11-25
      • 2011-12-11
      • 1970-01-01
      相关资源
      最近更新 更多