php使用get请求解析具有多个变量的URL

php使用get请求解析具有多个变量的URL,php,url,parsing,Php,Url,Parsing,我一次向多个url(大约15个)发送一个php脚本,所有url都包含大约5个url变量。在我的脚本中,我通过使用两个反斜杠(我在脚本之前添加了反斜杠)将url块解析为单独的url,然后卷曲每个单独的url。但是,当我运行脚本时,它只接受一个指向“&”符号的url。我希望有整个区块,这样我可以在以后的脚本中拆分它。解决这个问题的最佳方法是什么 谢谢 我向脚本发送url块时发生的情况示例: <?php /* $url variable being sent to script

我一次向多个url(大约15个)发送一个php脚本,所有url都包含大约5个url变量。在我的脚本中,我通过使用两个反斜杠(我在脚本之前添加了反斜杠)将url块解析为单独的url,然后卷曲每个单独的url。但是,当我运行脚本时,它只接受一个指向“&”符号的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
    ?>

通过在符号上拆分来形成$\u GET数组。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


您可以通过将参数转换为。示例:使用
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

由于您没有对url参数进行url编码,第一个&之后的所有内容都被视为原始url的参数。

在将(数据)url附加到脚本请求之前,需要对其进行urlencode()编码

否则,PHP将看到?listOfUrls=并在这里停止,因为文本为“&”

如果您正在用PHP构建查询字符串,可以尝试以下操作:

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

这看起来很像URL编码的问题-这些数据首先是如何进入查询字符串的?