我对此有一个疑问。。。
我有一个类似的url
http://www.SpiderWeb.com/vendors/search_results/scid:0/atr:1/mbp:1/bc:2/bc:1/mbpo:2/atrt:5/atop:1/opel:4
我想提取数组vars中的所有命名参数,这样我就可以在url中获得变量的名称和值,这样我可以使用它们进行一些处理。。。
有没有什么方法可以让我通过一些内置功能来实现这一点,而不是单独分配
即
$some_var = $this->request->params['named']['id'];
我想要它的重采样是因为命名的参数是动态的。。。。
这是最新的解决方案。。。
<?php
$url = 'http://www.SpiderWeb.com/vendors/search_results/scid:0/atr:1/mbp:1/bc:2/bct:1/mbpo:2/atrt:5/atop:1/opel:4';
$arr_url = parse_url($url);
//print_r($arr_url);
$res = explode("/vendors/search_results/",$arr_url['path']);
//print_r($res);
//print_r($res[1]);
$vars = explode("/",$res[1]);
//print_r($vars);
$result = array();
foreach($vars as $key => $val){
if (strpos($val, ":") !== false) {
$newvars = explode(":",$val);
//print_r($newvars);
$result[$newvars[0]] = $newvars[1];
}
}
print_r($result);
?>
只需循环通过命名的params数组
foreach ($this->request->params['named'] as $name => $param) {
pr("The param name is {$name}");
pr("The param value is {$param}");
}
试试这个:
$url = 'http://www.SpiderWeb.com/vendors/search_results/scid:0/atr:1/mbp:1/bc:2/bc:1/mbpo:2/atrt:5/atop:1/opel:4';
$myarr = parse_url($url);
$res = explode("/",$myarr['path']);
foreach($res as $val){
if (strpos($val, ":") !== false) {
$vars = explode(":",$val);
$$vars[0] = $vars[1];
}
}
echo $scid;