URLencoding,不应该存在的额外数据

时间:2013-10-13 16:53:00

标签: php html url curl encoding

的getURL

http://www.example.com/retro-briefcase-messenger-bag-3380

编码回声

https://api-ssl.bitly.com/v3/shorten?access_token=xxx&longUrl=http%3A%2F%2Fwww.xxx.com%2Fretro-briefcase-messenger-bag-3380%0A%3Cbr%3E

卷曲代码

   $curl = curl_init();
// Set some options - we are passing in a useragent too here

$encodedurl = urlencode($getUrl);

echo "CURL START";
curl_setopt_array($curl, array(
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_URL => 'https://api-ssl.bitly.com/v3/shorten?access_token=xxx&longUrl='.$encodedurl,
    CURLOPT_USERAGENT => 'Mozilla/4.0'
));

如果您发现3380背后的附加信息似乎是%0A%3Cbr%3E,我相信它代表了一个标签。

我做了一个urlEncode();直接从上面的链接,为什么我有这个额外的成分?

1 个答案:

答案 0 :(得分:1)

%0A%3Cbr%3E是<br>的编码版本,因此我怀疑您在原始数据中有换行符,即使您没有看到它。在使用之前尝试为它做一个trim()。

如果您使用PHP的urlencode到http://www.xxx.com/retro-briefcase-messenger-bag-3380,您将无法获得此类额外项目,因此您必须将其包含在原始数据中。我认为你有突破性的线路突破,然后是urlencode。

我能想到的唯一其他可能性就是curl api在那里增加了换行符。您可以使用硬编码的测试网址进行验证。