On 5/3/05, Ronny Haryanto <[EMAIL PROTECTED]> wrote: > Ini basic troubleshooting dari masalah apa pun: break it down into > manageable components, jangan sekaligus menyelesaikan semuanya. > > Itu udah yakin patternnya match? Kalo gak match kan gak akan > direplace. Test dulu pake preg_match(). > > $risi = "<td>1 Mei 2005 13:51:08 UTC</td>"; > if (preg_match("/<td>([0-9]{1,2})\ ([0-9]{1,2})\ ([0-9]{4})\ \ ([0-9:]{5,8})\ > UTC<\/td>/", $risi, $matches)) > { > echo "match, matches:"; > print_r $matches; > } > else > echo "no match"; > > Di inputnya ($risis) bulannya pake "Mei" tapi di patternnya pake > digits, mana pernah match kalo gitu. Dan space tidak perlu diescape > pake backslash. > yah yah yah, maaf salah saya, kopipesnya kurang. harusnya ada ini (merubah nama bulan ke bentuk digit) diantara dua baris tadi:
$risi = str_replace (array ("Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"), array ("01","02","03","04","05","06","07","08","09","10","11","12"), $risi); > Kalo saya ngematchnya akan pake pattern ini (groupingnya tetep): > /^<td>(\d\d?)\s+([A-Za-z]+)\s+(\d{4})\s+(\d\d:\d\d:\d\d)\s+UTC<\/td>$/ sekali lagi maaf, karena jadi membahas yang seharusnya tidak perlu dibahas. > Untuk backrefnya menurut manualnya (http://php.net/preg_replace) > katanya format $n lebih diprefer daripada \\n. > > Lalu selain itu juga backref hanya akan bekerja di dalam konteksnya > preg_replace dong, kalo anda panggil 'f1(f2(input))' maka input akan > diinterpret oleh f2() *duluan* dan f1() cuma terima hasil bersihnya > aja dr f2(), jadi 'f1(f2(input))' itu sama dengan 'tmp=f2(input); > f1(tmp)'. Ganti "f1" dengan "preg_replace" dan ganti "f2" dengan > "date". Jadi date akan diexecute dulu sebelum preg_replace. > > Lagipula, kenapa repot2 pake mktime()? Bukannya bisa gini: > > $pattern = > "/^<td>(\d\d?)\s+([A-Za-z]+)\s+(\d{4})\s+(\d\d:\d\d:\d\d)\s+UTC<\/td>$/"; > $risi = preg_replace($pattern, "<date>$1-$2-$3</date>\n<time>$4</time>", > $risi); > > Yg jadi masalah skrg itu, $2 itu inputnya dalam text, bukan numeric. > Itu emang inputnya begitu atau anda salah ketik atau gimana. Kalo text > sudah jelas gak bisa dipake utk jadi inputnya mktime lah. Lihat > http://au2.php.net/mktime kan semuanya int. > > Sekarang mundur sejenak dan lihat big picture dr masalahnya. Apakah > $risi itu memang sudah input "dari sononya", atau sesuatu yg anda > generate sendiri? Sebetulnya apa yg ingin anda capai dg cara di atas? > Lg bikin apaan kalo boleh tau? saya pakai mktime karena format tanggal aslinya kan non-leading zero. sementara saya perlu format with leading zero. o.k mas ronny ngerti sekarang. intinya saya tidak bisa langsung tembak dalam satu line yah. tapi memang harus bertahap (untuk kasus backref ini). iseng, mbenerin http://pribadi.or.id/ews/ karena bmg merubah layout dan content jadi saya harus ikutan merubah. sayangnya format penanggalan mereka ganti juga. dan ini jadi masalah di bagian caching karena nama filenya jadi gak sesuai hanya gara-gara satu digit 0 itu. > Ronny terimakasih jawaban panjang lebarnya. -- Firman Pribadi - http://pribadi.or.id/diary I am what I am today because of the choices I made yesterday. -- Berhenti langganan: [EMAIL PROTECTED] Arsip dan info: http://linux.or.id/milis