Expand any shortened url using PHP

Recently for a project which I was working on, I wanted a way to expand urls shorted by url shorteners.

After a couple of web searches I found an API site called LongURL. This service was really slow and I had to look for alternatives.

I thought of writing my own using curl and then parse the headers. I was searching for the curl functions in PHP Manual and I found a simple but not so famous function called get_headers().

This function is all we need to expand the urls. The following function expand_url() takes a short url and will return the longer version of the url.

Enjoy 🙂

Related posts

Tags: , ,

6 Comments so far

Follow up comments through RSS Feed | Post a comment

  • Mich says:

    Neat function; I didn’t expect it’d be this easy to do.

    However, sometimes, an url shortener links to another url shortener; for example: twitter automatically shortens every url tweeted with their t.co shortener. Many people still use other shorteners like bit.ly, then enter it on twitter, which gives you an url that redirects twice.

    For this reason, it seems like a good idea to make the function recursive: make it call itself until no location property is found any more. You could add another optional parameter to the function, a count variable passed by reference, which gets to hold the number of redirections detected, if your app would require such a feauture.

    That said, it’s a handy function; I’ll bookmark this post for later reference. 🙂

    • Sudar says:

      Right now in my app I don’t need to follow the link. But the use case you have given is valid.

      Let me update the post with the recursive function as well.

  • John says:

    Dude, this is awesome. I was trying to do this using CURL but my host didn’t allow you to follow locations. This is so much easier – thanks for putting it together.

  • J Harvey says:

    Thanks man, works great! @ Mich you might be able to use the users twitter RSS feed instead so the redirect is only 1 time : http://twitter.com/statuses/user_timeline/twitterusername.rss

  • Ian says:


    Struggling to get this to work with t.co links – has twitter changed something or am I doing something wrong. Testing from a localhost server.

1 Tweetbacks so far

1 Trackbacks/Pingbacks so far

Leave a Reply

Your email address will not be published. Required fields are marked *