我一次发送一个php脚本多个url(大约15个),全部包含大约5个url变量。在我的脚本中,我正在通过将两个反斜杠(我之前添加到脚本中)分成它们,然后将每个网址卷曲来将大块网址解析为单个网址。但是,当我运行我的脚本时,它只接受一个url直到“&”符号。我想拥有整个块,以便我可以稍后在我的脚本中拆分它。什么是解决这个问题的最佳方法?
感谢。
当我向脚本发送url chunk时会发生什么的一个例子:
<?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 :(得分:1)
在将(数据)网址附加到脚本的请求之前,您需要urlencode()。
否则,PHP将会看到?listOfUrls = http://someurl.com/?someVar=SomeVal&并停在那里,因为文字“&amp;”
如果您在PHP中构建查询字符串,可以尝试类似:
<?PHP
//imagine $urls is an array of urls
$qs = '?urls=';
foreach($urls as $u){
$q .= urlencode($u) .'\\';
}
我还怀疑你可以在url中使用[]表示法,这样在GET的另一端,你会得到一个很好的干净的URL数组,而不必像“\”那样解析一些分隔符
答案 1 :(得分: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
答案 2 :(得分:0)
由于你没有url编码你的url param,所以在第一个&amp;被视为原始网址的参数。