如何在PHP中获取整个URL字符串(包括&,?)?

时间:2012-06-09 04:15:05

标签: php string url

我想在参数中只获取URL字符串。 所以我在下面编码:

//In my HTML file.
<script>
document.write('<iframe id="ifr1" 
src="http://{domain}/prj.php?url=https://www.google.co.kr/search?sugexp=chrome,mod=3&sourceid=chrome&ie=UTF-8&q=url+utf8+encoding#sclient=psy-ab&hl=ko&newwindow=1&prmdo=1&tbm=klg&q=google&oq=google&aq=f&aqi=g10&aql=&gs_l=serp.3..0l10.2207859.2208404.3.2208459.6.4.0.1.1.3.496.1353.2-2j1j1.4.0...0.0.O1lbexylHQM&pbx=1&prmdo=1&bav=on.2,or.r_gc.r_pw.,cf.osb&fp=b8fee9fdb4e7f90&biw=1440&bih=828&a=' +'asdf'+" width="100%" height="100%" frameborder="0">   </iframe>');
</script>

//In my php file
$message = $_GET['url'];
echo("$message");

但我只能获得'https://www.google.co.kr/search?sugexp=chrome,mod=3'。

怎么了?

我想获得整个网址字符串。包括&amp;,?或其他所有内容。

2 个答案:

答案 0 :(得分:1)

您需要使用encodeURIComponent对url参数进行编码。

答案 1 :(得分:0)

原因是您将编码用于其他编码。

第一个是:

prj.php?url=[somedata]

其中[somedata]是具有其他键/值集合的URL:

https://url/etc/search?key1=value1&key2=value2

如果url参数不是 urlencoded ,则无法将/prj.php的参数与/search的参数区分开来,则假设 all < / em>使用&key=value&key=value...语法定义的参数都属于第一页。

诀窍是 url-encode url参数,但是你怎么做取决于上下文。

如果通过PHP以动态方式生成网址,请使用urlencode()功能。

如果你的网址是硬编码的(不是通过PHP生成的),你可以为自己编写一个小工具来完成这项工作,或使用像http://www.opinionatedgeek.com/dotnet/tools/urlencode/Encode.aspx这样的在线编码器