2009-11-05 79 views
0

我一次發送一個php腳本多個urls(約15個),全部包含約5個url變量。在我的腳本中,我通過將兩個反斜槓(我之前添加到腳本中)分割成單個URL,然後分解每個單獨的URL,從而將大塊網址解析爲單個URL。但是,當我運行我的腳本時,它只接受直到「&」符號的url。我想要整個大塊,以便稍後在腳本中分割它。什麼可能是解決這個問題的最好方法?php解析具有多個變量的url與獲取請求

謝謝。

,當我把我的腳本中的URL塊會發生什麼情況的一個例子:

<?php 
    /* 
    $url variable being sent to script: 
    http://www.test1.com?q1=a&q2=b&q3=c&q4=d\\http://www.test2.com?r1=a&r2=b&r3=c&r4=d\\http://www.test3.com?q1=a&q2=b&q3=c&q4=d\\http://www.test4.com?e1=a&e2=b&e3=c&e4=d 
    */ 

    $url = $_GET['url']; 

    echo $url; // returns http://www.test1.com?q1=a 

    //later on in my script, i just need to curl each "\\" seperated url 
    ?> 
+0

這看起來非常像一個用URL的編碼起訴 - 這個數據如何首先進入查詢字符串? – 2009-11-05 07:57:40

回答

1

您需要在將(數據)URL追加到腳本請求之前urlencode()。

否則,PHP將會看到listOfUrls = http://someurl.com/?someVar=SomeVal&,並停在那兒,因字面「&」

如果你正在構建在PHP的查詢字符串,你可以嘗試這樣的:?

<?PHP 
//imagine $urls is an array of urls 
$qs = '?urls='; 
foreach($urls as $u){ 
    $q .= urlencode($u) .'\\'; 
} 

我也懷疑你可以在URL中使用[]符號,所以在GET的另一端,你可以得到一個漂亮的乾淨的URL數組,而不必像一些分隔符一樣解析「\」

+0

+1表示[] – 2009-11-05 08:36:06

0

$ _GET數組被拆分連字符號形成。在將URL作爲參數傳遞之前,對URL進行URL編碼。 PHP應該爲你解碼它們。

實例:通過url=http://www.test1.com?q1=a%26q2=b%26q3=c%26q4=d\\http://www.test2.com?r1=a%26r2=b%26r3=c%26r4=d\\http://www.test3.com?q1=a%26q2=b%26q3=c%26q4=d\\http://www.test4.com?e1=a%26e2=b%26e3=c%26e4=d

您可以通過轉動參數爲array廢除了「\\」。例如:使用url[]=http://www.test1.com?q1=a%26q2=b%26q3=c%26q4=d&url[]=http://www.test2.com?r1=a%26r2=b%26r3=c%26r4=d&url[]=http://www.test3.com?q1=a%26q2=b%26q3=c%26q4=d&url[]=http://www.test4.com?e1=a%26e2=b%26e3=c%26e4=d

0

由於您沒有對網址param進行網址編碼,所以在第一個&之後的所有內容都被視爲原始網址的參數。