Bing Search Image API Azure Format Json PHP

Cara membuat parsing format json ke PHP pada Bing Search Image API Windows Azure dengan kode sederhana.

Format xml search image dengan Bing API lawas yang gratis alias free, sudah tidak berlaku. Yang dipakai sekarang Bing API V.2 atau dengan Windows Azure Markerplace, masih ada yang gratis walaupun terbatas (limit) hanya sampai 5000 request. Dengan menggunakan format Bing Windows Azure, kita dapat melakukan parsing PHP yang sederhana untuk Bing Search Image format json dengan cara berikut:

Membuat Form Search Box

<form method="get" action="<?php echo $_SERVER['PHP_SELF'];?>">
	Type in a search:
<input type="text" id="searchText" name="s"
	value="<?php
		if (isset($_GET['s']))
		{
			echo($_GET['s']); 
		}
			else 
		{ 
			echo('superman');
		}
?>"/>
<input type="submit" value="Search" id="searchButton" />
</form>

Menampilkan hasil pencarian gambar berdasarkan kata kunci (keyword) yang ditentukan.

if (isset($_GET['s'])) {
	$accountKey = 'your-account-key-here'; //get it here https://datamarket.azure.com/account
	$ServiceRootURL =  'https://api.datamarket.azure.com/Bing/Search/';
	$count = 2;//total list
        $skip  = 0; //for paged
        $WebSearchURL = $ServiceRootURL . 'Image?$format=json&$top=' . $count . '&$skip=' . $skip . '&Query=';
	$context = stream_context_create(array(
		'http' => array(
		'request_fulluri' => true,
		'header'  => "Authorization: Basic " . base64_encode($accountKey . ":" . $accountKey)
			)
	));
	$request = $WebSearchURL . urlencode( '\'' . $_GET['s'] . '\'');
	$response = file_get_contents($request, 0, $context);
	$jsonobj = json_decode($response);

	echo('<ul id="result">');
	foreach($jsonobj->d->results as $value)
	{                        
		echo('<li class="resultlistitem">');
		echo('<b>Title</b>: ' . $value->Title .'<br>');
		echo('<b>Url</b>: ' . $value->MediaUrl .'<br>');
		echo('<b>Source</b>: ' . $value->SourceUrl .'<br>');
		echo('<b>Display Url</b>: ' . $value->DisplayUrl .'<br>');
		echo('<b>Width</b>: ' . $value->Width .' px<br>');
		echo('<b>Height</b>: ' . $value->Height .' px<br>');
		echo('<b>File Size</b>: ' . KByteSize($value->FileSize) .'<br>');
		echo('<b>Image Type</b>: ' . $value->ContentType .'<br>');
		echo('<b>Thumbnail Url</b>: ' . $value->Thumbnail->MediaUrl . '<br>');					
		echo('<b>Thumbnail Display</b>:<br><img src="' . $value->Thumbnail->MediaUrl. '"><br>');
		echo('<b>Large Image Display</b>:<br><img src="' . $value->MediaUrl. '">');
		echo('</li>');
	}
	echo("</ul>");
}
	
//function to convert file size image
function KByteSize($bytes) {
    $size = $bytes / 1024;
    if($size < 1024)
        {
        $size = number_format($size, 2);
        $size .= ' KB';
        } 
    else 
        {
        if($size / 1024 < 1024) 
            {
            $size = number_format($size / 1024, 2);
            $size .= ' MB';
            } 
        else if ($size / 1024 / 1024 < 1024)  
            {
            $size = number_format($size / 1024 / 1024, 2);
            $size .= ' GB';
            } 
        }
    return $size;
}

Tampilannya seperti gambar ini

Bing Image Api
Tampilan API Bing Search Image

Pastikan Anda mencantumkan Primary/Account Key Anda dalam kode tersebut, silahkan daftar di Windows Azure https://datamarket.azure.com/account, gratis terbatas. Semoga bermanfaat.

Reference Code
Migrating Bing Search API Applications


 Share

Kode PHP – Search List dan Video YouTube Data API v.3

Kode PHP YouTube Data API 3 yang sederhana untuk menampilkan video hasil pencarian kata kunci dan video id.

Kode API youtube versi 1 tidak dapat digunakan lagi, untuk versi terbarunya yaitu YouTube Data API Version 3. Cara mudah untuk menampilkan daftar video Youtube berdasarkan kata kunci dan id video di situs atau aplikasi Anda, bisa dengan function PHP yang sederhana seperti ini:

Kode untuk menampilkan hasil

Search List
Untuk menampilkan video dari hasil pencarian berdasarkan kata kunci yang Anda tentukan.

jv_youtube('YOUR KEYWORD');

Single Video
Untuk menampilkan single video berdasarkan video id yang ditentukan. Cara mengetahui video id, misalnya pada link video YouTube https://www.youtube.com/watch?v=QqzekYZdBEo,
kode acak dalam link seperti ini QqzekYZdBEo adalah video id-nya.

jv_youtube('VIDEO ID','video');

Kombinasi dengan Form Search Box

$query = $_GET['x'];
echo '<form>
			<select name="type">
				<option value="search">List</option>
				<option value="videos">Video</option>
			</select>
			<input type="text" name="x" class="form-control" placeholder="Type Keywords or Video ID" value="'.$query.'" required>
			<button type="submit">SUBMIT</button>
	  </form>';
if(isset($query)){
	switch($_GET['type']){
		case 'videos';
			jv_youtube($query,'videos');
		break;
		default:
			jv_youtube($query);
		break;
	}
}

Kode function PHP YouTube API V.3

Simpan kode function berikut di bawah salah satu kode di atas atau di file khusus functions theme atau template situs Anda.

/**
 * Simple PHP Youtube Data API V.3
 * Code @jevuska https://www.jevuska.com/
 * Reference https://developers.google.com/youtube/v3/
 ***
 * USAGE
 ***
 * Search list function: jv_youtube('YOUR KEYWORD');
 * Single video function: jv_youtube('VIDEO ID','video');
 ***
 * With form query parameter 'x':
$query = $_GET['x'];
echo '<form>
			<select name="type">
				<option value="search">List</option>
				<option value="videos">Video</option>
			</select>
			<input type="text" name="x" class="form-control" placeholder="Type Keywords or Video ID" value="'.$query.'" required>
			<button type="submit">SUBMIT</button>
	  </form>';
if(isset($query)){
	switch($_GET['type']){
		case 'videos';
			jv_youtube($query,'videos');
		break;
		default:
			jv_youtube($query);
		break;
	}
}
 */

function jv_youtube_setup(){
	//setup Google API Key, create here https://console.developers.google.com/project/
	define('GOOGLE_API_KEY', 'your-google-api-key-here');
	
	//setup PART video api data - allowed values: [snippet,contentDetails,statistics,status]
	define('PART_VIDEO_DATA', 'snippet,contentDetails,statistics,status');
	define('PART_SEARCH_LIST_DATA', 'snippet');

	//setup as 'true' or 'false' to show Video Details and Statistics
	define('VIDEO_DETAILS',true);
	define('VIDEO_STATS', true);
	define('PLAYER', true);

	//setup search list - optional
	define('MAX_RESULT', '5'); //list file per page, min default is 5, max is 50
	define('SEARCH_TYPE', 'video'); //video, channel, playlist
	define('LIST_ORDER', 'date'); //date, rating, relevance, title, videocount, viewcount
	define('SAFE_SEARCH', 'moderate'); //moderate, strict, none

	//setup your text
	define('TOTAL_RESULT', 'Total Results:');
	define('RESULT_PER_PAGE', 'Results Per Page:');
		//write cacheing logic to implement this feature, ie: CACHE LITE PHP
			// define( 'NEXT_PAGE_TOKEN', 'Next Page Token:' ); 
			// define( 'PREVIOUS_PAGE_TOKEN', 'Previous Page Token:' );
	define('VIDEO_TITLE', 'Title:');
	define('VIDEO_DESCRIPTION', 'Description:');
	define('VIDEO_ID', 'Video Id:' );
	define('LINK_VIDEO', 'Link Video:');
	define('CHANNEL_TITLE', 'Channel Title:');
	define('CHANNEL_ID', 'Channel Id:');
	define('LINK_CHANNEL', 'Link Channel:');
	define('VIDEO_THUMBNAIL', 'Thumbnail:');
	define('VIDEO_PLAYER', 'Video Player:');
	define('TIME_PUBLISH', 'Published:');
	define('VIDEO_DURATION', 'Duration:');
	define('VIDEO_DIMENSION', 'Dimension:');
	define('VIDEO_DEFINITION', 'Definition:');
	define('VIDEO_CAPTION', 'Caption:');
	define('VIDEO_LICENSE', 'License:');
	define('COUNT_VIDEO_VIEW', 'View:');
	define('COUNT_VIDEO_LIKE', 'Like:');
	define('COUNT_VIDEO_DISLIKE', 'Dislike:');
	define('COUNT_VIDEO_FAVORITE', 'Favorite:');
	define('COUNT_VIDEO_COMMENT', 'Comment:');
}

function _jv_youtube_data($q,$type=''){
	jv_youtube_setup();
	switch($type){
		case 'videos':
			$data = array(
				'key' => GOOGLE_API_KEY,
				'id' => $q, //video id
				'part' => PART_VIDEO_DATA,
				//MORE OPTION https://developers.google.com/youtube/v3/
			);
		break;
		default:
			$type = 'search';
			$data = array(
				'key' => GOOGLE_API_KEY,
				'q' => urlencode($q), //query search parameter
				'part' => PART_SEARCH_LIST_DATA,

				//START OPTIONAL - comment this rest option if not used (add //)
				'maxResults' => MAX_RESULT,
				'type' => SEARCH_TYPE,
				'order' => LIST_ORDER,
				'safeSearch' => SAFE_SEARCH,
				//END OPTIONAL
				//MORE OPTION https://developers.google.com/youtube/v3/docs/search/list
			);
		break;
	}

	$param = http_build_query($data);
	$json = "https://www.googleapis.com/youtube/v3/$type?$param";
	$str = @file_get_contents($json);
	return $str;
}

function jv_youtube($q, $type = '',$inline = ''){
	$result = '';
	$str = _jv_youtube_data($q, $type);
	if($str === FALSE)	:
		// error handling
		$msg = "Invalid parameter file_get_contents";
		$result .= sprintf('%s', $str);
	else :
		$result .= _jv_search_youtube($str, $type, $inline);
	endif;
	
	if($inline == 'inline')
		return $result;
	else
		print $result;
}

function _jv_search_youtube($str, $type, $inline){
	$doc = json_decode($str, true);
	$respon = array();
	
	$totalresult = (int) $doc['pageInfo']['totalResults'];
	$resultsperpage = (int) $doc['pageInfo']['resultsPerPage'];

	if(empty($inline)){
		if ( defined( 'TOTAL_RESULT' ) )
		$respon[] = sprintf('<b><b>%1$s</b></b> %2$s',TOTAL_RESULT,$totalresult);
		if ( defined( 'RESULT_PER_PAGE' ) )
		$respon[] = sprintf('<b>%1$s</b> %2$s',RESULT_PER_PAGE,$resultsperpage);
	}
	if(empty($type)){
		$nextpage =  $doc['nextPageToken'];
		$prevpage =  $doc['prevPageToken'];
		
		if ( defined( 'NEXT_PAGE_TOKEN' ) )
		$respon[] =  sprintf('<b>%1$s</b> %2$s',NEXT_PAGE_TOKEN,$nextpage);
		if ( defined( 'PREVIOUS_PAGE_TOKEN' ) )
		$respon[] =  sprintf('<b>%1$s</b> %2$s',PREVIOUS_PAGE_TOKEN,$prevpage);
	}
	$i = 0;
	foreach($doc['items'] as $item) {
		$i++;
		if(empty($inline)){
			$title = $item['snippet']['title']; //video title
			$description = $item['snippet']['description']; //video description
			
			$published = $item['snippet'] ['publishedAt']; //published time
			//date format http://php.net/manual/en/datetime.formats.date.php
			$datepublish = date('d-m-Y',strtotime($published));
			
			$videoid = '';
			if(isset($item['id']['videoId']))
				$videoid .= $item['id']['videoId'];
			else
				$videoid .= $item['id'];
			$video_url = "https://www.youtube.com/watch?v=$videoid"; //video url
			$channelid = $item['snippet'] ['channelId']; //channel id
			$thumbnail_url = $item['snippet']['thumbnails']['medium']['url'];//thumbnail option: Allowed values: [default, medium, high]
			$channel_url = "https://www.youtube.com/channel/$channelid"; //channel url
			
			$respon[] = sprintf('<b>%1$s</b> %2$s',VIDEO_TITLE,$title);
			$respon[] = sprintf('<b>%1$s</b> %2$s',VIDEO_DESCRIPTION,$description);
			if ( defined( 'VIDEO_ID' ) )
				$respon[] = sprintf('<b>%1$s</b> %2$s',VIDEO_ID,$videoid);
			if ( defined( 'CHANNEL_ID' ) )
				$respon[] = sprintf('<b>%1$s</b> %2$s',CHANNEL_ID,$channelid);
			if ( defined( 'TIME_PUBLISH' ) )
				$respon[] = sprintf('<b>%1$s</b> %2$s',TIME_PUBLISH,$datepublish);
			if ( defined( 'VIDEO_THUMBNAIL' ) )
				$respon[] = sprintf('<b>%1$s</b><br><img src="%2$s">',VIDEO_THUMBNAIL,$thumbnail_url);
			if ( PLAYER == true )
				$respon[] = sprintf("<b>%s</b><br><div id='player-$i' class='player' data-id='$videoid'></div>",VIDEO_PLAYER);
			if ( defined( 'LINK_VIDEO' ) )
				$respon[] = sprintf('<b>%1$s</b> <a href="%2$s">%2$s</a>',LINK_VIDEO,$video_url);
			if ( defined( 'LINK_CHANNEL' ) )
				$respon[] = sprintf('<b>%1$s</b> <a href="%2$s">%2$s</a>',LINK_CHANNEL,$channel_url);
		}
		
		if($type == 'videos'){
			$channelititle = $item['snippet'] ['channelTitle']; //channel title
			if ( defined( 'CHANNEL_TITLE' ) )
				$respon[] = sprintf('<b>%1$s</b> %2$s',CHANNEL_TITLE,$channelititle);
			$details = $item['contentDetails'];
			$statistics = $item['statistics'];
			if ( VIDEO_DETAILS == true){
				foreach( array($details) as $item ) {
					$duration = covtime($item['duration']);
					$dimension = $item['dimension'];
					$definition = $item['definition'];
					$caption = $item['caption'] != 'false' ? $item['caption']: '-';
					$license = $item['licensedContent'];
					if ( defined( 'VIDEO_DURATION' ) )
						$respon[] = sprintf('<b>%1$s</b> %2$s',VIDEO_DURATION,$duration);
					if ( defined( 'VIDEO_DIMENSION' ) )
						$respon[] = sprintf('<b>%1$s</b> %2$s',VIDEO_DIMENSION,$dimension);
					if ( defined( 'VIDEO_DEFINITION' ) )
						$respon[] = sprintf('<b>%1$s</b> %2$s',VIDEO_DEFINITION,$definition);
					if ( defined( 'VIDEO_CAPTION' ) )
						$respon[] = sprintf('<b>%1$s</b> %2$s',VIDEO_CAPTION,$caption);
					if ( defined( 'VIDEO_LICENSE' ) )
						$respon[] = sprintf('<b>%1$s</b> %2$s',VIDEO_LICENSE,$license);
				}
			}
		
			if ( VIDEO_STATS == true ){
				foreach( array($statistics) as $item ) {
					$view = $item['viewCount'];
					$like = $item['likeCount'];
					$dislike = $item['dislikeCount'];
					$favorite = $item['favoriteCount'];
					$comment = $item['commentCount'];
					if ( defined( 'COUNT_VIDEO_VIEW' ) )
						$respon[] = sprintf('<b>%1$s</b> %2$s',COUNT_VIDEO_VIEW,$view);
					if ( defined( 'COUNT_VIDEO_LIKE' ) )
						$respon[] = sprintf('<b>%1$s</b> %2$s',COUNT_VIDEO_LIKE,$like);
					if ( defined( 'COUNT_VIDEO_DISLIKE' ) )
						$respon[] = sprintf('<b>%1$s</b> %2$s',COUNT_VIDEO_DISLIKE,$dislike);
					if ( defined( 'COUNT_VIDEO_FAVORITE' ) )
						$respon[] = sprintf('<b>%1$s</b> %2$s',COUNT_VIDEO_FAVORITE,$favorite);
					if ( defined( 'COUNT_VIDEO_COMMENT' ) )
						$respon[] = sprintf('<b>%1$s</b> %2$s',COUNT_VIDEO_COMMENT,$comment);
				}
			}
			$respon[] = '<hr>';	
		}
		if(empty($type))
			$respon[] = jv_youtube($videoid,'videos','inline');
	}
	$result = implode('<br>',$respon);
	return $result;
}

function covtime($youtube_time) {
	//function convert youtube time. Source: http://stackoverflow.com/questions/24393230/convert-youtube-api-v3-video-duration-in-php
    preg_match_all('/(\d+)/',$youtube_time,$parts);
    if (count($parts[0]) == 1) {
        array_unshift($parts[0], "0", "0");
    } elseif (count($parts[0]) == 2) {
        array_unshift($parts[0], "0");
    }

    $sec_init = $parts[0][2];
    $seconds = $sec_init%60;
    $seconds_overflow = floor($sec_init/60);

    $min_init = $parts[0][1] + $seconds_overflow;
    $minutes = ($min_init)%60;
    $minutes_overflow = floor(($min_init)/60);

    $hours = $parts[0][0] + $minutes_overflow;

    if($hours != 0)
        return $hours.':'.$minutes.':'.$seconds;
    else
        return $minutes.':'.$seconds;
}

Berikut kode JavaScript jika ingin menampilkan video player secara asyncronous.

<script>
//https://developers.google.com/youtube/iframe_api_reference
//http://stackoverflow.com/a/901144
	var tag = document.createElement('script');

	tag.src = "https://www.youtube.com/iframe_api";
	var firstScriptTag = document.getElementsByTagName('script')[0];
	firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

    players = new Array();
	var player = document.getElementsByClassName('player');
	function onYouTubeIframeAPIReady() {
		for (var i = 0; i < player.length; i++) {
			t = new YT.Player(player[i].getAttribute('id'), {
				height: '390',
				width: '640',
				videoId: player[i].getAttribute('data-id'),
				events: {
					//'onReady': onPlayerReady,
					'onStateChange': onPlayerStateChange
				}
			});
			players.push(t);
		}
	}

	function onPlayerReady(event) {
		event.target.playVideo();
	}

	function onPlayerStateChange(event) {
		var temp = event.target.getVideoUrl();
		if (event.data == YT.PlayerState.PLAYING) {
			for (var i = 0; i < players.length; i++) {
              if (players[i].getVideoUrl() != temp) {
				  setTimeout(players[i].stopVideo, 6000);
				  players[i].stopVideo();
			  }
			}
        }
	}

	function getParameterByName(name) {
		name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
		var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
			results = regex.exec(location.search);
		return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
	}
</script>

Set-up Google API Key Anda (ganti your-google-api-key-here pada kode function di atas), petunjuk tambahan lainnya ada dalam kode tersebut.

Youtube API 3 Search List Demo
Tampilan Script PHP Youtube API 3 Search

Kode PHP Video YouTube Data API v.3 ini tidak menggunakan Google Client API PHP library, jadi cukup sederhana untuk Anda terapkan di situs seperti WordPress atau aplikasi Anda. Kode untuk tampilan dan referensi lainnya bisa temukan di Google Developer YouTube Data API. Semoga bermanfaat.


 Share

Parsing RSS Menggunakan Curl dan SimpleXmlElement

Curl dan fungsi SimpleXmlElement untuk melakukan parsing file format RSS atau xml.

Kali ini kita coba menggunakan Curl dan fungsi SimpleXmlElement untuk melakukan parsing file format RSS atau xml. Sebelumnya beberapa fungsi parsing seperti simplexml_load_file juga berfungsi untuk parsing RSS.

Berikut ini contoh kode PHP Curl dan SimpleXmlElement yang digabung untuk parsing RSS mesin pencari Bing.

<?php
// Fungsi Curl
function curl($url){

    $headers&#91;&#93;  = "User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13";
    $headers&#91;&#93;  = "Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
    $headers&#91;&#93;  = "Accept-Language:en-us,en;q=0.5";
    $headers&#91;&#93;  = "Accept-Encoding:gzip,deflate";
    $headers&#91;&#93;  = "Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.7";
    $headers&#91;&#93;  = "Keep-Alive:115";
    $headers&#91;&#93;  = "Connection:keep-alive";
    $headers&#91;&#93;  = "Cache-Control:max-age=0";

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($curl, CURLOPT_MAXREDIRS, 2);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($curl, CURLOPT_ENCODING, "gzip");
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);

    $data = curl_exec($curl);
    curl_close($curl);
    return $data;
}

$rssnull = curl('http://www.bing.com/search?q=melissa+joan+hart&count=10&format=rss');

//Fungsi SimpleXmlElement
$doc = new SimpleXmlElement($rssnull, LIBXML_NOCDATA);

function parseRSS($doc)
{
    echo "<strong>".$doc->channel->title."</strong><br/>";
    $cnt = count($doc->channel->item);
    for($i=0; $i<$cnt; $i++)
    {
	$url 	= $doc->channel->item[$i]->link;
	$title 	= $doc->channel->item[$i]->title;
	$desc = $doc->channel->item[$i]->description;
 	echo '<a href="'.$url.'">'.$title.'</a><br/>'.$desc.'<br/>';
    }
}
parseRSS($doc);
?>

Keterangan:

  • $doc->channel->title: Menampilkan kata kunci
  • $url = $doc->channel->item[$i]->link;: Menampilkan tautan/link
  • $title = $doc->channel->item[$i]->title;: Menampilkan judul/title
  • $desc = $doc->channel->item[$i]->description;: Menampilkan deskripsi

Cara membuat pagination PHP

Cara membuat pagination yang benar harus mampu menentukan jumlah data yang ditampilkan dalam satu halaman.

Di Internet, paging atau pagination digunakan untuk menampilkan hal-hal atau sejumlah hasil pada halaman hasil mesin pencari, atau menampilkan sejumlah postingan. Pagination digunakan dalam beberapa bentuk di hampir setiap aplikasi web untuk membagi data dan menampilkannya dengan beberapa halaman. Ada banyak bentuk dan kegunaan yang berbeda dalam pagination seperti apakah harus menampilkan link “Previous” dan “Next”, dalam bentuk angka atau apakah harus terdapat link ke paging pertama dan terakhir di setiap halaman.

Cara membuat pagination yang benar harus mampu menentukan jumlah data yang ditampilkan dalam satu halaman. Berikut ini adalah contoh script pagination yang dibuat dengan kode PHP untuk menampilkan data Anda apakah diambil dari database sql, html, xml,json atau dalam format web lainnya.

<?php
$TotalFiles= 1000; //tentukan jumlah total file
$FilePerPage = 100; //tentukan jumlah file per halaman
$PagesTotal = ceil($TotalFiles / $FilePerPage);
if (isset($_GET&#91;'page'&#93;) && is_numeric($_GET&#91;'page'&#93;)) {
   $currentpage = (int) $_GET&#91;'page'&#93;;
} else {
   $currentpage = 1;
}
if ($currentpage > $PagesTotal) {
   $currentpage = $PagesTotal;
}
if ($currentpage < 1) {
   $currentpage = 1;
}
$offset = ($currentpage - 1) * $FilePerPage;
$range = 10;
if ($currentpage > 1) {
   echo"<a title='First' href='http://localhost/index.php?page=1'><<</a> ";
   $prevpage = $currentpage - 1;
   echo "<a title='Previous' href='http://localhost/index.php?page=$prevpage'><</a>";
}
for ($i = ($currentpage - $range); $i < (($currentpage + $range) + 1); $i++) {
   if (($i > 0) && ($i <= $PagesTotal)) {
      if ($i == $currentpage) {
         echo " &#91;<b>$i</b>] ";
      } else {
         echo " <a href='http://localhost/index.php?page=$i'>$i</a>";
      } 
   }
}
if ($currentpage != $PagesTotal) {
   $nextpage = $currentpage + 1;
   echo " <a title='Next' href='http://localhost/index.php?page=$nextpage'>></a>";
   echo "<a title='Last' href='http://localhost/index.php?page=$PagesTotal'>>></a>";
} 
?>

Ganti keterangan jumlah dan struktur url yang ditampilkan dalam kode pagination PHP di atas sesuai dengan data yang Anda miliki. Tampilan kode paging ini seperti gambar berikut:

Pagination PHP
Pagination PHP

Scrap situs dengan PHP Simple HTML DOM Parser

Dengan PHP Simple HTML DOM parser maka akan didapatkan tag yang dicari maka konten situs akan di-ekstrak per-baris alias di-scrap.

PHP HTML DOM parser berfungsi pada PHP 5+ yang digunakan untuk memanipulasi halaman HTML dengan sangat mudah. Cara kerjanya sangat sederhana karena fungsi ini hanya mencari tag dari suatu halaman HTML meskipun halaman HTML tersebut tidak valid. Setelah mendapatkan tag yang dicari maka konten situs akan di-ekstrak per-baris alias di-scrap.

Contoh Penggunaan PHP Simple HTML DOM Parser

Misalkan kita akan mengekstrak konten dari situs Yahoo Indonesia dan kita fokuskan pada tab konten “Berita Utama”.

Situs Yahoo Indonesia (Berita Utama)
Situs Yahoo Indonesia (Berita Utama)

Maka kode parsing PHP-nya seperti ini:

<?php
include 'simple_html_dom.php';
$url = "http://id.yahoo.com";
$html = file_get_html($url);
if (method_exists($html,"find")) {
echo "<ul>";
foreach($html->find('div[class=y-tabpanels] a[class=y-fp-pg-controls]') as $element ){
echo "<li>".$element ->plaintext."</li>";
}
echo "</ul>";
}else{}
?>

Deskripsi:

  • simple_html_dom.php adalah file Simple HTML DOM Parser yang Anda bisa donwload di simplehtmldom.sourceforge.net. Simpan file tersebut di direktori situs Anda.
  • $url adalah url situs yang akan di parsing halaman HTML-nya.
  • find(‘div[class=y-tabpanels] a[class=y-fp-pg-controls]‘) adalah tag elemen dari situs.
  • $element ->plaintext adalah bentuk elemen html yang akan dihasilkan.

Hasil parsing dari kode di atas seperti ini:

Hasil Parsing Simple HTML DOM
Hasil Parsing Simple HTML DOM

Kode referensi PHP simple HTML DOM bisa didapatkan di simplehtmldom.sourceforge.net dan untuk mengambil konten dari situs lain, mintalah ijin terlebih dahulu dari sang pemilik situs. :)

Cara mendapatkan gambar pertama dalam konten WordPress

Function berikut adalah cara mendapatkan gambar pertama dalam konten blog WordPress. Jika konten Anda tidak terdapat gambar maka akan diambil gambar default.

Function berikut adalah cara untuk mendapatkan gambar pertama dalam konten di blog WordPress. Jika konten Anda tidak terdapat gambar maka akan diambil gambar default yang telah Anda sisipkan url gambarnya dalam kode berikut.

function get_first_image() {
  if ($first_img = wp_get_attachment_thumb_url(get_post_thumbnail_id($post->ID))){
  return $first_img;
  }
  else {
 global $post, $posts;  
$first_img = '';
 ob_start();  
 ob_end_clean();  
$output = preg_match_all('/<img.+src=&#91;\'"&#93;(&#91;^\'"&#93;+)&#91;\'"&#93;.*>/i', $post->post_content, $matches) ;
$first_img = $matches [1] [0];
}
	if(empty($first_img)){
		$first_img = "http://www.namadomainanda.com/wp-content/uploads/2012/default.jpg";
		}
	return $first_img;
}

Ganti http://www.namadomainanda.com/wp-content/uploads/2012/default.jpg dengan url gambar default Anda. Untuk memanggil function ini terapkan kode berikut:

<?php if (function_exists('get_first_image')) {echo get_first_image(); }?>

PHP Header untuk HTTP Redirect API AdF.ly

Metode PHP Header untuk HTTP Redirect API AdF.ly akan me-redirect url Anda ke short url AdF.ly. Kode API yang sangat sederhana untuk aplikasi atau web Anda.

AdF.ly menyediakan dokumentasi API untuk memendekkan URL yang panjang (shortening url). Layanan API AdF.ly disediakan dengan gratis dengan jumlah hits yang tidak terbatas. API ini hanya tersedia bagi publisher yang terdaftar di AdF.ly.

Ada berbagai tool yang disediakan oleh AdF.ly salah satunya adalah API Documentation. Kode API AdF.ly sangat sederhana namun berguna untuk aplikasi/web Anda. Kode API AdF.ly bisa Anda dapatkan di http://adf.ly/tools.php?api, kodenya seperti ini:

http://api.adf.ly/api.php?key=abcdefghijklmnopqrstuvwxyz1234567890&uid=12340&advert_type=int&domain=adf.ly&url=http://somewebsite.com

Cara menggunakan API AdF.ly

  1. Metode PHP file_get_contents
    Kode ini untuk mendapatkan shrink/short url.

    <?php
    $resAPI = file_get_contents("http://api.adf.ly/api.php?key=abcdefghijklmnopqrstuvwxyz1234567890&uid=12345&advert_type=int&domain=adf.ly&url=http://somewebsite.com");
    echo $resAPI;
    ?>
    
    • ganti abcdefghijklmnopqrstuvwxyz1234567890 dengan key API AdF.ly Anda
    • ganti 12345 dengan uid Anda
    • advert_type=int dapat diganti dengan advert_type=banner jika Anda menginginkan banner iklan bentuk frame.
    • domain=adf.ly dapat diganti domain=q.gs
    • ganti http://somewebsite.com dengan url yang ingin Anda pendekkan
  2. Metode PHP Header HTTP Redirect
    <?php
    if(isset($_GET&#91;'url'&#93;)) {
    	$strURL = $_GET&#91;'url'&#93;;
    	if(!isset($_GET&#91;'api'&#93;))
    		$strAPIKey = 'abcdefghijklmnopqrstuvwxyz1234567890'; //API Key AdF.ly
    	if(!isset($_GET&#91;'uid'&#93;))
    		$intUID = '12345'; //UID akun Anda
    	if(!isset($_GET&#91;'type'&#93;))
    		$strADType = 'int';
    	if(!isset($_GET&#91;'domain'&#93;))
    		$strDOMAIN = 'adf.ly'; //Anda dapat mengganti domain adf.ly dengan q.gs
    	rawurlencode($strURL);
    	$resAPI = file_get_contents("http://api.adf.ly/api.php?key=".$strAPIKey."&uid=".$intUID."&advert_type=".$strADType."&domain=".$strDOMAIN."&url=".$strURL."");
    	if ($resAPI == 'error') {
    	die('An error has occurred within the API.');
    	}
    else {
    header( 'Location:'.$resAPI );
    exit;
    }
    }
    	if(!isset($strURL))
    header( 'Location:/404.php' );// jika url tidak dapat dipendekkan akan diredirect ke halaman 404
    exit;
    ?>
    

    Tempatkan kode tersebut di header website Anda, dan gunakan parameter url untuk memanggil kode tersebut, misalnya seperti ini:

    http://www.yourwebsite.com/redirect?url=http://somewebsite.com
    

    Metode ini akan me-redirect url Anda ke short url AdF.ly dari long url http://somewebsite.com

Hands on
AdF.ly adalah layanan gratis untuk forward url (redirection URL) yang memungkinkan siapa pun untuk memperpendek URL. Layanan ini juga memberikan kesempatan bagi advertiser dan publisher, advertiser dapat mempromosikan situsnya, dimana situs tersebut ditempatkan pada halaman short url yang di-generate dari AdF.ly. Sedangkan publisher bisa mendapatkan penghasilan dari hasil klik short url AdF.ly yang ditempatkan di aplikasi/situs mereka ataupun di halaman web lainnya, misalnya melalui jejaring sosial (social media).