TELAH DIBUKA !!!

Toko Ebook Tutorial "RosihanAri.Net"


Free Ebook Tutorial from Rosihan Ari's Blog

Tutorial Javascript | Tutorial PHP Dasar | Tutorial AJAX | Tutorial CSS | Tutorial FPDF | Tutorial Wordpress



Slot iklan tersedia, pasang iklan di atas

Ebook yang direkomendasikan untuk Anda
Ebook Panduan Praktis OOP di PHP

Mengambil Substring dari Suatu String dengan Function substr()


June 28th, 2008 | by rosihanari | Cetak Artikel Cetak Artikel

Kisah penulisan artikel ini berawal dari SMS seorang teman yang bekerja di suatu kantor perusahaan Jepang di Jakarta. Teman saya meminta tolong untuk dibuatkan aplikasi untuk membaca data file teks yang dihasilkan dari sebuah mesin presensi bernama AMANO. File teks itu berisi data-data presensi karyawan setiap harinya. Mau tahu bentuk datanya? Ini saya tampilkan 10 baris contoh datanya ya…

31200801211455000100093408000002
31200801211455000100032510950002
31200801211529000100034212950002
31200801211530000100018412930002
31200801211531000100177001050002
31200801211531000100197108050002
31200801211531000100163007030002
31200801211531000100179402050002
31200801211531000100198408050002
31200801211531000100209501080002

Kalau datanya cuman 10 saja seperti di atas sih gak masalah… Tapi kenyataannya satu file teks berisi kira-kira 2000-3000 data presensi. Satu file teks dihasilkan dari presensi sehari. Padahal file teks yang saya terima berjumlah sekitar 30 buah (presensi dalam 30 hari). Itu pun hanya sample file saja yang dikirimkan :-)

Dari sebuah data yang ada dalam file teks itu bermakna sesuatu. Berikut ini penjelasannya:

Misalkan diambil data

31200801211455000100093408000002

Penjelasan Digitnya :

Digit 1 – 2 (31) : menunjukkan kode bagian karyawan ditempatkan
Digit 3 – 6 (2008) : menunjukkan tahun ketika presensi
Digit 7 – 8 (01) : menunjukkan bulan ketika presensi
Digit 9 – 10 (21) : menunjukkan tanggal ketika presensi
Digit 11 – 12 (14) : menunjukkan jam ketika presensi
Digit 13 – 14 (55) : menunjukkan menit ketika presensi
Digit 15 – 18 (0001) : menunjukkan keterangan presensi. Jika 0001 artinya presensi untuk masuk kerja, dan jika 0002 artinya presensi untuk keluar kerja
Digit 19 – 28 (0009340800) : menunjukkan kode karyawan yang melakukan presensi
Digit 29 – 32 (0002) : menunjukkan kode mesin presensi

Nah… yang jadi permasalahan adalah bagaimana cara mengambil atau memisahkan digit-digit tersebut, sehingga dapat dibaca per item data seperti penjelasan di atas?

Dalam PHP, hal ini tidak menjadi masalah karena ada function substr(). Bagaimana sintaksnya?

substr(x, y [, z]);

dengan x adalah string utuh yang akan diambil substring nya, y adalah posisi awal substring (dimulai dari 0), dan z adalah panjang substring yang akan diambil. Parameter z sifatnya optional. Apabila z tidak diberikan, maka pengambilan substring mulai dari posisi awal y sampai dengan akhir dari string.

Contoh:

<?php
$stringKu = "hallo";
echo substr($stringKu, 1); // menghasilkan "allo"
echo substr($stringKu, 1, 3); // menghasilkan "all"
echo substr($stringKu, 0, 4); // menghasilkan "hall"
?>

Sehingga untuk kasus data presensi di atas, script untuk memisahkan setiap item adalah sebagai berikut:

<?php
$data = "31200801211455000100093408000002";
$kodeBagian = substr($data, 0, 2);
$tahun = substr($data, 2, 4);
$bulan = substr($data, 6, 2);
$tanggal = substr($data, 8, 2);
$jam = substr($data, 10, 2);
$menit = substr($data, 12, 2);
$keterangan = substr($data, 14, 4);
$kodeKary = substr($data, 18, 10);
$kodePresensi = substr($data, 28, 4);
?>

Baca Juga Artikel Terkait
Tentang Function str_replace()
Memformat Bilangan dengan Function number_format()
Mengatur Digit Desimal Bilangan Real di PHP



Slot iklan tersedia, pasang iklan di atas


Kata kunci: PHP -


Ada 4 komentar dalam artikel ini.



  1. Dhanang says:

    wow…
    artikel yang bagus…

  2. akbar says:

    pak, bagaimana kalau kita ngambil stringnya mulai dari kanan? terima kasih

    • rosihanari says:

      @akbar: setahu saya tidak ada function di php untuk ambil substring dari kanan. Tp anda bisa pakai ide lain yaitu, balik dulu stringnya pakai strrev() lalu ambil dari kiri substringnya pakai substr() kemudian balik lagi substring yang diambil tadi dengan strrev.

  3. jarnoae says:

    Pak,

    kalau ambil kata akhir atau kata awal dari sebuah kalimat / url bagaimana?
    Apakah sama?

    thanks b4