PHP DZone Story Information Grabber

By  on  

Having a user submit a post to DZone is great for several reasons:

  • A reader thinks enough of what you wrote to want to share it with others.
  • Your blog gets more readership.
  • Your blog revenue increases.
  • The inlink and traffic boost improve your search engine rank and Alexa ranks.
  • The new visitors may post comments, which may enhance your article.

Surely there are numerous more. Thus, it's important to keep track of the information about your article provided by DZone. Luckily, using some quick PHP code, you can grab relevant information right from DZone. All you need to know is the DZone URL that features your article.

The Code

/* step 1:  download the page content */
$dzone_content = file_get_contents('http://www.dzone.com/links/f_programming_fast_guide.html');

/* step 2:  parse it! */
$votes_up = get_match('/class="ldStats-up">(.*)<\/li>/isU',$dzone_content);
$votes_down = get_match('/class="ldStats-down">(.*)<\/li>/isU',$dzone_content);
$views = get_match('/class="ldStats-views">(.*)<\/li>/isU',$dzone_content);
$clicks = get_match('/class="ldStats-clicks">(.*)<\/li>/isU', $dzone_content);

/* step 3:  echo */
echo 'Up Votes: ',$votes_up,'<br />';
echo 'Down Votes: ',$votes_down,'<br />';
echo 'Views: ',$views,'<br />';
echo 'Clicks: ',$clicks,'<br />';

/* helper:  does regex */
function get_match($regex,$content)
{
	preg_match($regex,$content,$matches);
	return $matches[1];
}

One note: each usage of this script increments DZone's "views" stat, so if you plan on keeping accurate statistics, record the number of requests to the page and subtract that from the total.

Recent Features

  • By
    39 Shirts &#8211; Leaving Mozilla

    In 2001 I had just graduated from a small town high school and headed off to a small town college. I found myself in the quaint computer lab where the substandard computers featured two browsers: Internet Explorer and Mozilla. It was this lab where I fell...

  • By
    Responsive and Infinitely Scalable JS Animations

    Back in late 2012 it was not easy to find open source projects using requestAnimationFrame() - this is the hook that allows Javascript code to synchronize with a web browser's native paint loop. Animations using this method can run at 60 fps and deliver fantastic...

Incredible Demos

  • By
    Translate Content with the Google Translate API and JavaScript

    Note:  For this tutorial, I'm using version1 of the Google Translate API.  A newer REST-based version is available. In an ideal world, all websites would have a feature that allowed the user to translate a website into their native language (or even more ideally, translation would be...

  • By
    Xbox Live Gamer API

    My sharpshooter status aside, I've always been surprised upset that Microsoft has never provided an API for the vast amount of information about users, the games they play, and statistics within the games. Namely, I'd like to publicly shame every n00b I've baptized with my...

Discussion

  1. I added some lines for those who are behind a proxy, also you have an extra on line 8 but this is a good one to track your posts on DZone :)

    /* step 1: download the page content */
    $default_opts = array(‘http’=>array(
    ‘method’=>”GET”,
    ‘header’=>”Accept-language: en\r\n” . “Cookie: foo=bar”,
    ‘proxy’=>”tcp://http-proxy.mycompany.com:80″));
    $def = stream_context_get_default($default_opts);
    $dzone_content = file_get_contents(‘http://www.dzone.com/links/f_programming_fast_guide.html’);
    
    /* step 2: parse it! */
    $votes_up = get_match(‘/class=”ldStats-up”>(.*)/isU’, $dzone_content);
    $votes_down = get_match(‘/class=”ldStats-down”>(.*)/isU’, $dzone_content);
    $views = get_match(‘/(.*)/isU’, $dzone_content);
    $clicks = get_match(‘/(.*)/isU’, $dzone_content);
    
    /* step 3: echo */
    echo ‘Up Votes: ‘,$votes_up,”;
    echo ‘Down Votes: ‘,$votes_down,”;
    echo ‘Views: ‘,$views,”;
    echo ‘Clicks: ‘,$clicks,”;
    
    /* helper: does regex */
    function get_match($regex, $content){
    preg_match($regex, $content, $matches);
    return $matches[1];
    }
    

Wrap your code in <pre class="{language}"></pre> tags, link to a GitHub gist, JSFiddle fiddle, or CodePen pen to embed!