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


URLencoding, Extra data that isn't supposed to be there

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(),为什么我有这个额外的成分?

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

如果你使用 PHP 的 urlencode 来http://www.xxx.com/retro-briefcase-messenger-bag-3380你不会得到这样的额外项目,所以你必须把它放在原始数据中。我假设你有换行符通过html实体,然后是urlencode。

我能想到的唯一另一种可能性是 curl api 在那里添加了换行符。您可以使用硬编码的测试 URL 进行验证。