如何将url转换为类似浏览器的url?(..%20..)


How to convert a url to a browser like url? ( ...%20... )

我想使用CURL获取数据,但遇到了问题。当我设置这样的网址

$url = "https://graph.facebook.com/fql?q=SELECT name FROM page"; // continues

我没有归还任何东西。当我复制浏览器url时,这是

$url = "https://graph.facebook.com/fql?q=SELECT%20name%20FROM%20page";

我通过CURL获得结果。我尝试了htmlentitieshtmlspecialchars,但运气不佳。

我在这里错过了什么?

  $ch = curl_init($url);
  curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
  $content = curl_exec($ch);

您可以在curl_init();中使用urlencode($string);,或者在之前调用urlencode并将其设置为一个变量,如:

示例:

<?php
$url = 'https://graph.facebook.com/fql?q=';
$query = "SELECT name FROM page WHERE page_id in(SELECT page_id, type FROM page_admin WHERE uid = me() AND type != 'APPLICATION' )&access_token=". $facebook->getAccessToken();
$ch = curl_init(urlencode($query));
$ch = $url.$ch;
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
$content = curl_exec($ch);

php文档:http://php.net/manual/en/function.urlencode.php


错误使用:htmlspecialchar()和htmlentities()

htmlspecialchar()用于剥离URI字符串中的字符和清除数据。使用urldecode将%20等解码为正确的字符串。

相反,使用urlencode($string);将空格、斜杠、与号和其他元素转换为它们各自的URL友好对应元素。

urlencode()怎么样?

$url = urlencode($url);

看看这是否有效。

  $ch = curl_init(urlencode($url));