我有這樣一個路徑:我可以根據url路徑生成一個數組嗎?
/博客/ 2 /後/ 45 /評論/ 24
我能有一個數組要看什麼我有網址,如:
$arr = array('blog'=>'2','post'=>'45','comment'=>'24');
但它應該取決於通過的變量:
/blog/2 should produce $arr = array('blog'=>'2');
這是可以創建動態數組嗎?
我有這樣一個路徑:我可以根據url路徑生成一個數組嗎?
/博客/ 2 /後/ 45 /評論/ 24
我能有一個數組要看什麼我有網址,如:
$arr = array('blog'=>'2','post'=>'45','comment'=>'24');
但它應該取決於通過的變量:
/blog/2 should produce $arr = array('blog'=>'2');
這是可以創建動態數組嗎?
你可以嘗試這樣的事:
function path2hash($path) {
// $path contains whatever you want to split
$chunks = explode('/', $path);
$result = array();
for ($i = 0; $i < sizeof($chunks) - 1; $i+=2)
$result[$chunks[$i]] = $chunks[$i+1];
return $result;
}
然後,您可以使用parse_url
解壓路徑,這個功能把它變成所需的哈希值。
好的工作。用法:)謝謝 – flakerimi 2011-03-25 14:12:37
首先使用$_SERVER['REQUEST_URI']
來查找當前路徑。
現在,你可以使用爆炸等字符串函數生成數組...
如果你需要一個工作示例,虐待嘗試發佈一個。
編輯:
$path=explode('/',$path);
$arr=array(
$path[0]=>$path[1],
$path[1]=>$path[2]);
或者不知道它有多長......
$arr=array();
for ($i=0; $i+1<count($path);i+=2)
$arr[$path[$i]]=$path[$i+1];
不是真的本身的答案,但你會發現http://www.php.net/manual/en/function.parse-url.php有用。
本來是一個很棒的評論,雖然 – kapa 2011-03-25 14:15:55
下面是一個試圖解決該問題的簡單示例。這會將參數放入「參數」數組中,並將包含數組中的每個鍵/值的組合。如果有奇數個參數,最後一個元素將被忽略。
這使用array_shift()從數組中移除第一個元素,然後將其用作參數數組中的鍵。然後我們從數組中移除下一個元素,然後再次使用array_shift()。如果我們在這裏找到實際值(當數組爲空時,array_shift返回NULL),我們在arguments數組中創建一個條目。
$path = '/blog/2/post/45/comment/24';
$elements = explode('/', $path);
// remove first, empty element
array_shift($elements);
$arguments = array();
while($key = array_shift($elements))
{
$value = array_shift($elements);
if ($value !== NULL)
{
$arguments[$key] = $value;
}
}
你嘗試爆炸,然後循環結果數組? – 2011-03-25 14:06:50