Create Digg URLs Using PHP
Digg recently came out with a sweet new feature that allows users to create Tiny Digg URLs which show a Digg banner at the top allowing easy access to vote for the article from the page. While I love visiting Digg every once in a while, I'd rather grab the URL remotely. Here's how to do so using PHP.
The PHP
/* function that grabs the response from digg */ function get_digg_url($url,$app_key) { $return_xml = file_get_contents('http://services.digg.com/url/short/create?type=xml&appkey='.urlencode($app_key).'&url='.urlencode($url)); $digg_url = get_match('/short_url="(.*)"/isU',$return_xml); return $digg_url; } /* function that runs a regex to scrub for the url */ function get_match($regex,$content) { preg_match($regex,$content,$matches); return $matches[1]; } /* important! set a fake user agent */ ini_set('user_agent','Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6'); /* url i want the digg URL for, and my app key which is a URL */ $url = 'https://davidwalsh.name/penetrated-diggnation'; $app = 'https://davidwalsh.name'; /* get the digg URL! */ $digg_url = get_digg_url($url,$app); //returns: http://digg.com/u1DOk
Very quick and simple. You could also use PHP's cURL library if you wanted.
The XML Response
<?xml version="1.0" encoding="UTF-8"?> <shorturls count="1" offset="0" timestamp="1238884894" total="1"> <shorturl link="https://davidwalsh.name/penetrated-diggnation" short_url="http://digg.com/u1DOk" view_count="0"/> </shorturls>
XML is a beautiful thing, isn't it? You may also request a JSON response.
Like this Digg article? I suppose you could Digg it! Or you can check out the time I was featured on DiggNation!
Note: My attempts with cURL were unsuccessful but that was likely a hosting provider issue.
Excellent David.
However, maybe this would be better suited to an object to bring those depended functions together. Additionally, it maybe best to avoid all those ini_set shenanigans and embrace the XML rather that RegEx’n it.
@Anthony Sterling: I like the regex because it prevents the overhead of bringing in XML parsing. In all honesty, not using a XML reader is probably safer.
Thanks, this is nice… I wonder how long tinyurl will last now that digg competes with them?
Very nice! For some reason I wasn’t getting any return HTTP request – and the reason was because I didn’t set the User Agent! Thanks for the tip!
How would I get this to link from an image?
I have my own image, how would I get that image to link to the Auto-generated DIGG Url?
Thanks,
Keith.
This script does not work anymore, can you please tell me how to post to digg using PHP. Thanks.