PHP和&中的$ _GET

时间:2012-02-24 20:23:11

标签: javascript

我有一个问题。我已经使用以下代码创建了一个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&sort=age”,因为我有一个&amp;在那里我的PHP脚本无法正确评估链接。我如何解决这个问题?

4 个答案:

答案 0 :(得分:3)

在通过url GET参数将目标URL传递给脚本之前,请使用urlencode()对其进行编码(或根据目标URL进入情况的等效位置对其进行编码)。

当您检索$_GET['url']时,编码将自动撤消,从而为您提供原始(所需)网址。 (感谢Quentin在这里纠正我。)

希望这有帮助。

答案 1 :(得分:1)

使用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>

答案 2 :(得分:1)

假设您的数据中的字符在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
  }
});

答案 3 :(得分:0)

在将url传递给url参数之前尝试进行URL编码。如果您想快速,请使用下面提到的链接。

http://meyerweb.com/eric/tools/dencoder/