$_GET in PHP and &

$_GET in PHP and &

本文关键字:amp and PHP GET in      更新时间:2023-09-26

我有一个问题。我做了一个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",因为我有一个 &在那里,我的 php 脚本无法正确评估链接。我如何解决问题?

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

当您检索$_GET['url']时,编码将自动反转,为您提供原始(所需的(URL。(感谢昆汀在这里纠正我(。

希望这有帮助。

使用 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
  }
});

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

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