【发布时间】:2012-11-26 20:02:36
【问题描述】:
进入页面的 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
)
以前有人做过吗?如何修改上面的代码以使其正常工作?或者有人对如何做到这一点有其他想法吗?
非常感谢任何帮助, 谢谢!
【问题讨论】:
-
不使用 uri 参数有什么原因吗?即:
http://localhost/testSite?id=1&friend_id=32&msg_id=5&category_id=40这个数组就在$_GET或$_REQUEST -
@cegfault 不,没有任何特殊原因。我只是在试验 mod_rewrite 和 PHP。
-
如果您想在 HTTPD 级别执行此操作,在 .htaccess 中而不是重写 url,您可以保持原样并将其加载到 Apache 环境变量 (httpd.apache.org/docs/2.2/env.html) 中,这将是在 $_SERVER (php.net/manual/en/function.getenv.php) 超全局中可用。
标签: php arrays url url-routing url-parameters