Postingan lainnya
cara memasukan cUrl ke dalam tabel
gan saya mau tanya!!! cara memasukan data hasil dari cUrl ?
dan ini source codenya:
<?php
function belajar($url){
// inisialisasi CURL
$data = curl_init();
// setting CURL
curl_setopt($data, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($data, CURLOPT_URL, $url);
// menjalankan CURL untuk membaca isi file
$hasil = curl_exec($data);
curl_close($data);
return $hasil;
}
$mengambil = belajar('http://www.seputarforex.com/data/konversi_matauang/');
$pecah = explode('<table width="100%" cellspacing="0" cellpadding="4"
style="border:1px solid #CCCCCC; margin:6px 0px 10px 0px; max-width:600px; ">
', $mengambil);
$pecahLagi = explode('</table>
', $pecah[1]);
echo $pecahLagi[0];
?>
2 Jawaban:
Kalo yang ane tangkep, agan mau grabbing site ya? Sebenernya udah bener cara explodenya, cuman untuk grab, ga harus pake cURL, pake file get contents juga bisa.
Terus, yang paling penting adalah, buat kita ngebaca elemen HTML, PHP punya kelas sendiri yaitu, kelas "DOMDocument" sama "DOMXPath". Dimana, DOMDocument untuk ngbaca markup HTML dan DOMXPath buat ngbaca elemennya.
Berikut contoh codingan yang udah ane coba untuk grabbing data:
<?php
$target = "http://www.seputarforex.com/data/konversi_matauang/";
$content = file_get_contents($target);
$content = preg_replace( "/\r|\n/", "", $content );
$table = explode('<table width="100%" cellspacing="0" cellpadding="4', $content);
$table = $table[1];
$end = strpos($table, '</table> <br>');
// var_dump($end);
$table = substr($table, 0, $end);
$table = str_replace("\" style=\"border:1px solid #CCCCCC; margin:6px 0px 10px 0px; max-width:600px; \">", "", $table);
$internalErrors = libxml_use_internal_errors(true);
$dom = new DOMDocument;
$dom->loadHTML($table);
$xPath = new DOMXPath($dom);
$nodes = $xPath->query('//table');
if($nodes->item(0)) {
$nodes->item(0)->parentNode->removeChild($nodes->item(0));
}
$tr = $xPath->query('//tr');
$result = [];
foreach($tr as $index => $row) {
if ($index > 0) {
$data = [
'from' => $row->childNodes[0]->textContent,
'from_currency' => $row->childNodes[1] ? $row->childNodes[1]->textContent : 'N/A',
'to' => $row->childNodes[3] ? $row->childNodes[3]->textContent : 'N/A',
'to_currency' => $row->childNodes[4] ? $row->childNodes[4]->textContent : 'N/A',
'rate' => $row->childNodes[5] ? $row->childNodes[5]->textContent : 'N/A',
'idr' => $row->childNodes[6] ? $row->childNodes[6]->textContent : 'N/A'
];
$result[] = $data;
}
}
unset($result[10]);
$result = array_values($result);
libxml_use_internal_errors($internalErrors);
// Tinggal ambil resultnya aja.
var_dump($result);
Memang belum sempurna, tapi basicnya sih gitu. Kalo best practicenya, bisa di jadiin fungsi atau kelas biar bisa re-useable scriptnya.
CMIIW, semoga solved :D
NOTE: Script diatas hanya berjalan pada website/url yang agan kasih. Kalo untuk grabbing url lain, agan kudu baca markup HTML dan elemen mana yang mau di ambil.
Daripada make source itu, mending pake source dari http://fixer.io/ gan, keluarnya json, jadi ringan dehh.