Kamis, 05 Januari 2012

Cara Untuk Memecah String Menjadi Substring dengan Jumlah Karakter Sama

Sebelum saya menulis artikel tentang bagaimana teknik mengirim SMS dengan Gammu dengan panjang karakter lebih dari 160 buah melalui query INSERT SQL bahkan sampai dengan unlimited karakter, ada baiknya saya tulis dulu artikel mengenai teknik memecah string menjadi beberapa buah substring dengan jumlah karakter yang sama.
Mungkin ada di antara Anda yang sedikit protes, mengapa harus demikian? ya… karena pada dasarnya teknik mengirim SMS dengan Gammu dengan panjang karakter di atas 160 karakter menggunakan query SQL itu adalah dengan membagi pesan SMS ke dalam beberapa buah pesan, dimana setiap pesannya memiliki panjang n karakter. Nah… berapakah n yang saya maksud di situ? Yang jelas bukan n nya bukan 160. Tunggu artikel lebih lanjut mengenai hal itu ya…  harap sabar..

OK, untuk sementara singkirkan dulu dari benak Anda mengenai SMS gateway nya, sekarang fokus dulu ke materi cara memecah string ke dalam beberapa substring dengan jumlah karakter sama. Untuk memudahkan pemahaman Anda mengenai hal ini, akan saya berikan contoh sederhana. Misalkan kita punya string ‘ternyatabelajarphpitumudahsekali’. Nah… misalkan kita ingin membagi string tersebut ke dalam beberapa substring dengan panjang karakter 5 buah. Dengan demikian nanti kita akan dapatkan hasil beberapa substring sbb:
substring ke-0: ‘terny’
substring ke-1: ‘atabe’
substring ke-2: ‘lajar’
substring ke-3: ‘phpit’
substring ke-4: ‘umud’
substring ke-5: ‘ahse’
substring ke-6: ‘kali’
Catatan: untuk substring terakhir isinya hanya ada 4 karakter karena karakternya sudah habis. Sedangkan substring ke-0 s/d ke-5 semuanya berjumlah karakter 5 buah.
So… bagaimana teknik memecah string seperti di atas dengan PHP? OK ini dia salah satu idenya.
OK, misalkan kita punya string ‘ternyatabelajarphpitumudahsekali’, maka untuk memperoleh substring ke-0, kita ambil karakter ke-0 (yaitu karakter ‘t’) sampai dengan karakter ke-4 (‘y’). Atau dengan kata lain untuk substring ke-0 ini kita ambil 5 buah karakter dimulai dari karakter ke-0.
Oya… saya hampir lupa, dalam PHP karakter pertama dari suatu string itu dianggap karakter ke-0.
Selanjutnya untuk substring ke-1 itu kita ambil 5 karakter lagi yang dimulai dari karakter ke-5. Substring ke-2, kita ambil 5 karakter lagi mulai dari karakter ke-10. Substring ke-3 kita ambil 5 karakter mulai dari karakter ke-15. Nah… bisakah Anda tebak karakter mana yang diambil untuk mendapatkan substring ke-5? yup tepat sekali yaitu kita ambil 5 karakter mulai dari karakter ke-25. Kok bisa? ya.. karena secara umum untuk mendapatkan substring ke-i itu adalah dengan mengambil n karakter dimulai dari karakter ke i*n.
OK paham ya idenya… trus, sekarang kita mulai terapkan ide di atas untuk membuat programnya. Berikut ini langkahnya.
Pertama, kita harus menentukan dahulu kira-kira berapa jumlah substring yang terbentuk bila string tersebut. Untuk menghitungnya, cukup kita bagi jumlah semua karakter dalam string dengan berapa karakter yang kita ingin pecah. Jika hasilnya tidak genap atau pecahan, maka bulatkan ke atas. Misal ada 20 karakter dan kita ingin pecah menjadi subtring dengan jumlah karakter 6, maka semua subtring yang terbentuk adalah 20/6 = 3.33 atau 4.
Mungkin ada yang bertanya untuk apa kita tentukan jumlah subtring yang akan terbentuk? ya… karena nanti proses pemecahan string ini kita menggunakan looping sejumlah banyaknya subtring yang terbentuk. Misalkan ada m buah substring yang akan kita dapatkan, maka untuk membuat subtring ke-0, 1, …, m-1 itu nanti kita gunakan looping saja biar mudah.
Kedua, setelah kita menentukan jumlah substringnya, langkah berikutnya adalah proses pemecahan ke dalam subtringnya. OK.. mungkin yang menjadi pertanyaan berikutnya adalah bagaimana cara membaca n buah karakter mulai dari karakter ke-i*n dari sebuah string? Jangan khawatir, nanti kita gunakan function substr() di PHP. Kalau Anda ingin buat sendiri juga gpp :-)
Nah.. sekarang kita buat script PHP nya. Dalam hal ini saya buat dalam bentuk function saja. Function ini nanti akan menghasilkan subtring-subtring dalam bentuk array.
01.<?php
02. 
03.function pecahString($string, $n)
04.{
05.// mendapatkan jumlah substring yang terbentuk
06.$m = ceil(strlen($string)/$n);
07. 
08.// inisialisasi hasil
09.$hasil = array();
10. 
11.// proses pemecahan subtring
12.for ($i=0; $i<=$m-1; $i++)
13.{
14.$hasil[$i] = substr($string, $i*$n, $n);
15.}
16. 
17.return $hasil;
18.}
19. 
20.?>
Keterangan:
Function substr($string, $i*$n, $n) itu digunakan untuk membaca substring dari sebuah string sebanyak-n karakter dimulai dari karakter ke-i*n.
Nah… sekarang contoh penggunaan function di atas.
01.<?php
02. 
03.function pecahString($string, $n)
04.{
05.$jumSub = ceil(strlen($string)/$n);
06. 
07.$hasil = array();
08.for ($i=0; $i<=$jumSub-1; $i++)
09.{
10.$hasil[$i] = substr($string, $i*$n, $n);
11.}
12. 
13.return $hasil;
14.}
15. 
16.// string asli
17.$stringKu = "belajarphpitusangatmudahsekalialiastidaksulitkawan";
18. 
19.// string asli akan dipecah menjadi substring dengan panjang 8 karakter
20.$pecah = pecahString($stringKu, 8);
21. 
22.// menampilkan hasil pecahan
23.foreach($pecah as $substring => $data)
24.{
25.echo "Substring ke-".$substring." : ".$data."<br>";
26.}
27. 
28.?>
Hasil dari script di atas ketika dijalankan di browser adalah sbb:
1.Substring ke-0 : belajarp
2.Substring ke-1 : hpitusan
3.Substring ke-2 : gatmudah
4.Substring ke-3 : sekalial
5.Substring ke-4 : iastidak
6.Substring ke-5 : sulitkaw
7.Substring ke-6 : an
Wah.. kok agak repot ya untuk memecah stringnya menjadi substring dengan jumlah karakter sama. Bagi yang merasa repot, tenang saja karena di PHP sudah ada built in function yang bisa langsung digunakan tanpa membuat sendiri seperti halnya di atas. Function yang saya maksud adalah: str_split(). Adapun contoh penggunaannya adalah str_split($string, $n); sama seperti di atas dan hasilnyapun juga sama yaitu dalam bentuk array.
Aduh… ngapain harus repot-repot belajar script di atas kan sudah ada built in functionnya? he 3x… jangan sedih kawan, karena secara tidak sadar begitu Anda selesai membaca penjelasan saya di atas berarti Anda sudah melatih logika berpikir Anda. Kalau bisa buat script sendiri, ngapain harus pake function yang sudah ada? urusan efisien atau tidaknya algoritmanya, itu masalah nanti saja. Karena untuk belajar programming, yang harus Anda asah adalah logika berpikirnya dulu. OK?
◄ Newer Post Older Post ►