指向页面的URL如下所示:
“http://localhost/testsite/id/1/friend_id/32/msg_id/5/category_id/40”
我想将这些变量(id/1、friend_id/32、msg_id/5等)剥离,并将它们组成如下数组:

$params = array('id' => 1, 'friend_id' => 32, 'msg_id' => 5, 'category_id' => 40)

这样我就可以像这样访问这些值:
$params['id']; $params['friend_id'];

我以为我能用下面的代码,但没什么用。
    $keys = explode('/', $url);
    $k2 = $keys;
    $result = array();

    foreach ($keys as $k => $v) {
       $result[$v] = next($k2);
    }
    array_pop($result);
    print_r($result);

我将从上面的代码中得到以下输出:
Array
(
    [id] => 1
    [1] => friend_id
    [friend_id] => 32
    [32] => msg_id
    [msg_id] => 5
    [5] => category_id
    [category_id] => 40
)

以前有人这样做过吗?如何修改上面的代码以使其正常工作?或者有人对如何做到这一点有其他想法吗?
我非常感谢你的帮助,
谢谢!

最佳答案

如果这是由一个框架完成的,那么应该有方法获取参数。在那种情况下见医生。
否则您可以使用简单的regex来解析它。其思想是使用define a prefix($root在代码中)。

$url = 'http://localhost/testSite/id/1/friend_id/32/msg_id/5/category_id/40';
$root = 'http://localhost/testSite/';
$params =  substr($url, strlen($root));
preg_match_all("#([^/]+)/([^/]+)#", $params, $match);
$result = array_combine($match[1], $match[2]);

关于php - PHP-获取URL参数并在数组中重新排列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13783480/

10-09 17:36
查看更多