$ _GET PHP和&
我有一个问题。我做了一个PHP代理使用此代码从外部服务器获取JSON数据:
<?php
$url = $_GET['url'];
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
$data = curl_exec($ch);
curl_close($ch);
echo("<h1>".$url."</h1>");
echo (substr($data,0,-1));
?>
但我要通过这个链接“http://isohunt.com/js/json.php?ihq=ubuntu &排序=年龄“,因为我有一个&在那里我的PHP脚本无法正确评估链接。我如何解决这个问题?
在通过url GET参数将目标URL传递给脚本之前,使用urlencode()
(或取决于目标URL进入情况的等效项)对其进行编码。
当您检索$_GET['url']
时,编码将自动反转,并将原始(需要的)URL留给您。 (荣誉Quentin在这里纠正我)。
希望这会有所帮助。
' $ _GET'会自动解码URL(这很重要)。问题在于它们不是首先被编码的! – Quentin 2012-02-24 20:29:20
@Quentin谢谢 - 啤酒和*不要混用。这就像现在10带编辑下的东西:$ ... – jstephenson 2012-02-24 20:35:28
使用urlencode
来生成链接,例如,
echo '<a href="http://example.com/my-script.php?url="';
echo url_encode($url);
echo '">click here</a>';
这应该输出
<a href="http://example.com/my-script.php?url=http%3A%2F%2Fisohunt.com%2Fjs%2Fjson.php%3Fihq%3Dubuntu%26sort%3Dage">click here</a>
想必当你在你的数据在URI的特殊含义的字符(如&
)你无法对其进行编码(如%26
针对特定字符) 。
由于您在为此标记jquery-ajax:请停止手动构建您的URI。让jQuery做到这一点:
$.ajax({
url: "myProxy.php",
data: {
url: "http://isohunt.com/js/json.php?ihq=ubuntu&sort=age"
},
success: function(){
// yada yada
}
});
谢谢,它的作品很棒 – DxW 2012-02-28 03:02:37
可能重复[如何在JavaScript中的URL编码?](http://*.com/questions/332872/how-to-encode-a-url-in-javascript) – hakre 2012-02-24 20:43:28