如何使用包含GET参数中的url的bitly API缩短链接[PHP]

时间:2014-07-06 07:01:48

标签: php get

我正在尝试使用PHP API来缩短网址。我试图缩短的网址包含GET参数中的网址。

网址类似于

http://www.my.domain.io/Embed.php?k=318353564&p=something&a=someone&d=true&i=http://i.imgur.com/gBlh6Zm.jpg&pop=true&popn=0

当我首次使用iurlencode()的链接版本时,返回的缩短链接会将我发送到http://www.my.domain.io/Embed.php?k=318353564,其余参数将被截断。

当我在urlencode()参数urlencode()后的整个链接上使用i时,它会返回整个链接http://www.my.domain.io/Embed.php?k=318353564&p=something&a=someone&d=true&i=http://i.imgur.com/gBlh6Zm.jpg&pop=true&popn=0,但因为参数i未编码在链接中它只给我403错误。

当我发送完全没有编码的链接时,它会再次返回不带参数的链接。当我在整个链接上发送带有urlencode()的链接时,它会再次返回链接的文字版本,从而导致403错误。因此,尝试编码链接的4种不同方式都没有引导我找到正确的链接。

1 个答案:

答案 0 :(得分:3)

您需要使用“%26”而不是&符号(&)。

http://www.my.domain.io/Embed.php?k=318353564%26p=something%26a=someone%26d=true%26i=http://i.imgur.com/gBlh6Zm.jpg%26pop=true

当我使用以下GET参数查询API时:

https://api-ssl.bitly.com/shorten?version=2.0.1&login=<bitly_username>&access_token=<bitly_accesstoken>&format=json&history=1&longUrl=http://www.my.domain.io/Embed.php?k=318353564%26p=something%26a=someone%26d=true%26i=http://i.imgur.com/gBlh6Zm.jpg%26pop=true

我收到http://bit.ly/1n4OuzX之类的链接,将我重定向到原始网址。

更新: 当我将域名从“www.my.domain.io”更改为我的本地Web服务器时,它会将参数发送给它。

这是print_r:

Array
(
    [k] => 318353564
    [p] => something
    [a] => someone
    [d] => true
    [i] => http://i.imgur.com/gBlh6Zm.jpg
    [pop] => true
    [popn] => 0
)