2011-11-09 58 views
23

我有一個網絡日誌以下網址:PHP網址陣列

http://www.domain.com/page?s=194&client=151678&m=a4a&v=1&g=54 
http://www.domain.com/page?s=51&client=617171&m=b4z&v=8&g=97 

我如何轉換這個網址在PHPso數組,我將有一個像這樣

array(
'page' => array(
    's' => 194, 
    'client' => 151678 
    'm' => 'a4a', 
    'v' => 1, 
    'g' => 54 
) 
etc.. 
) 

數組那麼稍後我可以循環訪問該數組以查找重複項或正確驗證信息。

回答

26

可能有更好的方法來做到這一點,但是這是我想出了。

<?php 

    $url = 'http://www.domain.com/page?s=194&client=151678&m=a4a&v=1&g=54'; 
    $remove_http = str_replace('http://', '', $url); 
    $split_url = explode('?', $remove_http); 
    $get_page_name = explode('/', $split_url[0]); 
    $page_name = $get_page_name[1]; 

    $split_parameters = explode('&', $split_url[1]); 

    for($i = 0; $i < count($split_parameters); $i++) { 
     $final_split = explode('=', $split_parameters[$i]); 
     $split_complete[$page_name][$final_split[0]] = $final_split[1]; 
    } 

    var_dump($split_complete); 

?> 

http://codepad.org/xTsAks46

+0

非常感謝你 – eric

+0

非常全面 - 謝謝。 – foxybagga

26

PHP有一個原生函數,parse_str函數。你可以像這樣使用它:

parse_str($_SERVER['QUERY_STRING'], $outputArray); 

這將做你所需要的。

+2

這將如何工作的網絡日誌? – Tech4Wilco

+0

這是首選方法,因爲它支持通過&和=分隔的任何標準字符串。適用於捲曲反應也很好 – Dss

+1

這應該是被接受的anwser。 –

6

With parse_url()您可以將URL解析爲關聯數組。在結果數組中,您可以獲得查詢部分。然後,您可以使用parse_str()將查詢部分解析到新數組中。

0

你可以這樣做:在這裏

function convertUrlToArray($url){ 
    $url = str_replace("http://www.domain.com/page?", "", $url); 
    $urlExploded = explode("&", $url); 
    $return = array(); 
    foreach ($urlExploded as $param){ 
     $explodedPar = explode("=", $param); 
     $return[$explodedPar[0]] = $explodedPar[1]; 
    } 
    return $return; 

} 

$url1 = convertUrlToArray("http://www.domain.com/page?s=51&client=617171&m=b4z&v=8&g=97"); 
var_dump($url1); 

例如http://codepad.org/KIDKPzaU

+0

該作品,但我錯過了「頁」 – eric

1

從你的問題假設路徑永遠是/page,包含解析的網址陣列不能有多個page索引,所以你應該使用數字索引。

試試這個:

$urls_parsed = array(); 
foreach ($url_strings as $url_string) { 
    $url = parse_url($url_string); 
    $urls_parsed[] = parse_str($url['query']); 
} 

$url_strings是包含所有你想要的字符串格式解析的URL的數組。 $urls_parsed是包含以您請求的格式解析的URL的結果數組。

1

使用parse_url功能像

<?php 
$url = 'http://username:[email protected]/path?arg=value#anchor'; 
print_r(parse_url($url)); 
echo parse_url($url, PHP_URL_PATH); 
?> 

它會給你以下陣列輸出

Array 
(
[scheme] => http 
[host] => hostname 
[user] => username 
[pass] => password 
[path] => /path 
[query] => arg=value 
[fragment] => anchor 
) 

而且從查詢,你可以很容易分開來(鍵,值)paira。希望這有助於。:)