Zemanta API & examples – over view with PHP

Nandakumar | December 2 - 2008

Zemanta provides live suggestions when you start writing blogs. Zemanta also a browser based plugin gives you suggestions based on your text that you typing, image, url’s & more.

What is the purpose of using Zemanta ?

You can get relevant tags what you have typed.

NLP – Natural Language processing, it analyze your input text with lexical analyzer & find out the tags(/objects/names)

Based on that tags, it lists the number of URL’s/ images found related to those tags.

Input : “text”

Output : Related URLs, Tags & images

Sample Code how it works,

Contact Zemanta & get API from them.

Live Testing URL : http://livebillion.com/calais/test_zemanta.php



<form action=”dozemanta.php”>
<table width=”100%”>
<tr><th colspan=”2?>Testing Zemanta API</th></tr>
<textarea name=”text” style=”width:500px;”></textarea>
<tr><td> ——— Or ————–</td></tr>
<input name=”url” type=”text” value=”” style=”width:500px;”/>
<tr><td> <input type=”submit” name=”btn” value=”Extract” /></td></tr>


$url = ‘http://api.zemanta.com/services/rest/0.0/’; //Should be in a conffile
$format = ‘xml’; // May depend of your application context
$text = $_REQUEST[“text”];
$text = strip_tags(file_get_contents($_REQUEST[“url”]));

$key = “YOUR_API_KEY”; //Should be in a conf file
$method = “zemanta.suggest”; // May depend of your application context

$args = array(
‘method’=> $method,
‘api_key’=> $key,
‘text’=> $text,
‘format’=> $format

$data = “Here we build the data we want to POST to Zementa”;
foreach($args as $key=>$value)
$data .= ($data != “”)?”&”:””;
$data .= urlencode($key).”=”.urlencode($value);

/* Initialisation of curl */
$ch = curl_init();
/* Setup of the url*/
curl_setopt($ch, CURLOPT_URL, $url);
/* We want a post request */
curl_setopt($ch, CURLOPT_POST, 1);
/* Here we give to curl the data we want to send to Zementa*/
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
/* We setup the response method of curl */
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
/* Execute curl and fetch the result */
$response = curl_exec ($ch);
/* Close curl connection */
curl_close ($ch);
//echo $response;

$xmlArray = xml2array($response); // XML2ARRAY is a function to covert xml to array

// Get the top array

$content = $xmlArray[“rsp”];

// Related Articles

foreach($content[“articles”] as $articles){
$i = 0;
echo ‘<table width=”100%”><tr><th colspan=2>Related Articles:</th></tr>’;
foreach($articles as $article){
//echo $i;
//echo $article[“url”][“value”];
echo ‘<tr><td><a href=”‘.$article[“url”][“value”].’” target=”_new” >’.$article[“title”][“value”].’</a></td></tr>’;
echo ‘</table>’;

// Related Keywords

foreach($content[“keywords”] as $keywords){
$i = 0;
echo ‘<table width=”100%”><tr><th colspan=2>Keywords:</th></tr><tr><td>’;
foreach($keywords as $keyword){
//echo $i;
//echo $article[“url”][“value”];
echo ‘<a href=”http://www.popdup.com/tag/’.$keyword[“name”][“value”].’” target=”_new” >’.$keyword[“name”][“value”].’</a> ’;
echo ‘</td></tr></table>’;

// Related Images

foreach($content[“images”] as $images){
$i = 0;
echo ‘<table width=”100%”><tr><th colspan=2>Images:</th></tr>’;
foreach($images as $image){
//echo $i;
//echo $article[“url”][“value”];
echo ‘<tr><td><a href=”‘.$image[“url_l”][“value”].’” target=”_new” ><img src=”‘.$image[“url_s”][“value”].’” style=” border:0px;” /></a></td><td>’.$image[“description”][“value”].’</td></tr>’;
echo ‘</table>’;