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 进行验证。