Skip to main content

Regex - Google Search

Selesai update website, kepikir untuk ngerjain fitur search di website. Kalau bikin sendiri kan susah, jadi mau memanfaatkan fasilitas google. Google emang menyediakan fasilitas untuk search, dengan membatasi pada situs tertentu. Caranya dengan nambahin teks "site:url" pada query. Misalnya "sms site:www.invosa.com", berarti akan mencari kata "sms" di situs www.invosa.com.

Setelah bisa nyoba, sekarang giliran ngambil isi website itu dengan php. Ketemu deh caranya, dengan fopen biasa. Masalahnya, aku nggak mau header dan footer google (apalagi iklan-iklannya) ikut serta. Untunglah ada fasilitas regex (regular expression) di PHP. Lumayan, sambil belajar juga.

Cari sana-sini, trial and error, buka tutorial ke mana-mana, gak berhasil juga. Ternyata gak semudah yang dibayangkan. Sampai sore baru selesai. Jadi lebih dari setengah hari untuk nyari itu. Akhirnya dapat kode kayak gini:


if (isset($txSearch) && ($txSearch != "")) {
$txSearch = str_replace(" ","+",$txSearch);
$tplContent = "http://www.google.com/search?q=$txSearch+site%3Awww.invosa.com&submit=Google+Search";
//echo file($tplContent);
if (($fp = fopen($tplContent,"r")) === false)
die ("ERROR");
$content = "";
while ($chunk = fgets($fp))
$content .= $chunk;
if (!$content) die("KOSONG");

// cari bagian search result aja
// dibatasi oleh tag DIV
// /is artinya case insensitif (i), terus termasuk line-break (s)
preg_match("/<div>.+<\/div>/is",$content, $matches);
$fcontents .= str_replace("/search?","http://www.google.com/search?",$matches[0]);
}


Lumayan, nambah ilmu lagi. Setidaknya aku belajar ngambil file (remote), pakai PHP, terus belajar string replace, dan yang terpenting adalah belajar regular experssion.

Sore ini juga ada conference untuk project DVD Player. Tapi pas aku gabung, udah nggak ada pembicaraan lagi. Katanya sih chip untuk OSD bakalan ganti ... wah si Mbah seneng (atau malah sedih nih?).

Comments

Popular posts from this blog

PostGreSQL :: Hitung Umur

Ternyata untuk menghitung umur dari data yang disimpan di PostGreSQL sangat gampang. PostGreSQL sendiri sudah menyediakan fungsi yang mendukung. Beberapa fungsi yang bisa dipakai adalah AGE dan EXTRACT. AGE dipakai untuk menghitung umur dari sebuah data, dibandingkan dengan hari ini, atau dengan data lain (tipenya timestamp). Misal: age(timestamp '1980-09-27'), akan menghasilkan nilai (bertipe interval) "24 years 1 mon 25 days". Nah, kalau mau mengambil nilai tahunnya saja, tinggal menggunakan EXTRACT Contoh: EXTRACT(year FROM AGE(timestamp '2001-09-27')), hasilnya akan jadi 24.

PHP :: Selisih Jam

Setelah kemarin kesulitan untuk melakukan increment ataupun decrement terhadap variabel waktu (date/time) di PHP, kali ini nemuin masalah untuk mencari selisih waktu (dari satu jam ke jam tertentu), yang perlu untuk ngitung lembur karyawan. Tadinya kepikiran untuk buat fungsi sendiri, yang flow -nya kira-kira begini: - masing-masing dipisah menjadi jam, menit, detik - bandingkan antara keduanya. - lakukan pengurangan terhadap masing-masing komponen (jam, menit dan detik) - gabungkan hasil perhitungan ... (selisih jam + selisih menit + selisih detik) Tapi waktu aku ingat kasus Next Date, ... muncul ide untuk menggunakan cara yang sama, yaitu memanfaatkan format UNIX timestamp, terus nyoba mencari selisihnya. TERNYATA BERHASIL !!! Flownya seperti ini: - masing-masing dipisah menjadi jam, menit,detik - ubah masing-masing ke format timestamp, gunakan fungsi mktime() - kurangkan kedua jam - hasilnya dibagi 60 (karena satuannya pakai menit), sementara selisih timestamp itu dalam detik Algori

Delphi :: Split String

Akhirnya ketemu juga cara untuk melakukan split string. (Terbiasa pakai PHP sih, yang sangat memanjakan dalam pengelolaan string.) Di sini memanfaatkan TStringList, unit Classes. // procedure untuk split string procedure Split (const Delimiter: Char; // delimiter charachter Input: string; // input string const Strings: TStrings) ; // list of string result begin Assert(Assigned(Strings)) ; Strings.Clear; Strings.Delimiter := Delimiter; Strings.DelimitedText := Input; end; // contoh pemakaian procedure TForm1.Button1Click(Sender: TObject) ; var A: TStringList; begin A := TStringList.Create; try Split(' ', 'your delphi guide', A) ; ShowMessage(a[0]) ; //your ShowMessage(a[1]) ; //delphi ShowMessage(a[2]) ; //guide finally A.Free; end; end; Source : http://delphi.about.com/cs/adptips2002/a/bltip1102_5.htm Wheew .. akhirnya. One step ahead!!