Pada tutorial belajar PHP Duniailkom kali ini saya akan membahas sebuah fungsi sederhana yang cukup sering digunakan, yakni fungsi substr(). Fungsi substr() digunakan untuk memotong sebuah string atau mengambil sebagian nilai dari sebuah string di dalam PHP.
Mengenal Fungsi substr()
Fungsi substr() adalah fungsi PHP untuk memotong string, atau untuk mengambil sebagian nilai dari sebuah string. Fitur ini cukup sering digunakan dalam proses pembuatan program PHP, terutama yang membutuhkan manipulasi string.
Sebagai contoh, misalkan kita memiliki sebuah string berbentuk tanggal: "14-09-2015". Bagaimana caranya untuk mengambil nilai bulan dari string tersebut, yakni karakter "09" ?
Contoh lain, katakan NIM seorang mahasiswa terdiri dari 8 digit: "12140001". Dua digit pertama adalah tahun masuk mahasiswa, dua digit berikutnya kode jurusan, dan empat digit terakhir adalah no urut mahasiswa. Bagaimana cara memisahkan digit-digit ini?
Dalam kasus seperti inilah fungsi substr() diperlukan.
Fungsi substr() membutuhkan 2 buah argumen dan 1 argumen tambahan (opsional). Arguman pertama adalah string asal yang ingin diambil nilainya. Argumen kedua berupa posisi awal pemotongan, dan argumen ketiga diisi jumlah karakter yang akan diambil. Argumen kedua dan ketiga bertipe integer dan bisa positif maupun negatif.
PHP membuat penggunaan fungsi substr() dengan 6 kombinasi cara penulisan. Kita akan membahasnya satu persatu.
Cara Mengambil Karakter Dari Awal String
Penggunaan pertama fungsi substr() yang akan kita bahas adalah cara mengambil karakter yang dimulai dari awal string. Berikut contoh penggunaannya:
<?php $kalimat = "Belajar PHP di Duniailkom"; $sub_kalimat = substr($kalimat,3); echo $sub_kalimat; // ajar PHP di Duniailkom ?>
Dalam kode diatas, saya mengambil string $kalimat mulai dari index ke-3. Jika fungsi substr() ditulis dengan 2 argumen seperti ini, dan argumen kedua bernilai positif, maka fungsi substr() akan mengembalikan nilai string $kalimat mulai dari huruf ke-4, yakni huruf "a" hingga akhir string.
Perlu menjadi catatan bahwa index string di dalam PHP dimulai dari angka 0. Sehingga fungsi substr($kalimat,3) akan mengembalikan nilai string $kalimat mulai dari huruf ke-4, dan bukan huruf ke-3.
Agar lebih yakin, anda bisa mencoba kode berikut ini:
<?php $kalimat = "123456789"; $sub_kalimat = substr($kalimat,3); echo $sub_kalimat; // 456789 ?>
Fungsi substr() juga memiliki argumen ketiga yang bersifat opsional (boleh diisi atau dikosongkan). Jika kita menambahkan argumen ketiga, nilai ini berfungsi sebagai penentu 'berapa banyak jumlah karakter yang akan diambil'. Berikut contohnya:
<?php $kalimat = "Belajar PHP di Duniailkom"; $sub_kalimat = substr($kalimat,8,3); echo $sub_kalimat; // PHP ?>
Fungsi substr($kalimat,8,3) akan mengambil string $kalimat mulai dari index ke-8 (karakter ke-9) dan ambil sebanyak 3 karakter.
Kita juga bisa memberikan nilai negatif untuk argumen ke-3 ini, dan fungsinya akan berubah. Berikut contohnya:
<?php $kalimat = "Belajar PHP di Duniailkom"; $sub_kalimat = substr($kalimat,8,-3); echo $sub_kalimat; // PHP di Duniail ?>
Fungsi substr($kalimat,8,-3) akan mengembalikan string $kalimat mulai dari index ke-8 (karakter ke-9) hingga akhir string, kecuali 3 karakter terakhir. 3 karakter terakhir ini adalah "kom", sehingga hasil akhir kode diatas adalah: "PHP di Duniail".
Contoh lainnya, apabila kita ingin mengambil string $kalimat mulai dari index ke-10 hingga akhir string, kecuali 5 karakter terakhir, maka fungsinya adalah: substr($kalimat,10,-5).
Cara Mengambil Karakter Dari Akhir String
Selain dari awal string, kita juga bisa mengambil karakter mulai dari akhir string. Caranya adalah dengan memberikan nilai negatif pada argumen kedua fungsi substr(). Langsung saja kita lihat contoh penggunaannya:
<?php $kalimat = "Belajar PHP di Duniailkom"; $sub_kalimat = substr($kalimat,-10); echo $sub_kalimat; // Duniailkom ?>
Fungsi substr($kalimat,-10) berarti ambil 10 karakter terakhir dari string $kalimat.
Agar lebih spesifik, kita juga bisa menentukan jumlah karakter yang ingin diambil. Ini bisa didapat dengan menambahkan argumen ke-3:
<?php $kalimat = "Belajar PHP di Duniailkom"; $sub_kalimat = substr($kalimat,-10,5); echo $sub_kalimat; // Dunia ?>
Kombinasi terakhir dari fungsi substr() adalah menggunakan angka minus untuk argumen ketiga, seperti contoh berikut:
<?php $kalimat = "Belajar PHP di Duniailkom"; $sub_kalimat = substr($kalimat,-10,-3); echo $sub_kalimat; // Duniail ?>
Fungsi substr($kalimat,-10,-3) berarti ambil 10 karakter terakhir dari string $kalimat, kecuali 3 karakter terakhir, sehingga hasil kode programnya adalah: "Duniail".
Dari beberapa contoh diatas, kita sudah melihat 6 jenis kombinasi penggunaan fungsi substr(). Kombinasi tersebut di dapat dari perbedaan jumlah argumen dan apakah argumen tersebut bertipe positif dan negatif. Sebagai kesimpulan, berikut contoh kode seluruh kombinasi fungsi substr():
<?php $kalimat = "Belajar PHP di Duniailkom"; echo substr($kalimat,8); // PHP di Duniailkom echo "<br>"; echo substr($kalimat,8,6); // PHP di echo "<br>"; echo substr($kalimat,8,-5); // PHP di Dunia echo "<br>"; echo substr($kalimat,-10); // Duniailkom echo "<br>"; echo substr($kalimat,-10,5); // Dunia echo "<br>"; echo substr($kalimat,-10,-3); // Duniail ?>
Pengambilan sebagian nilai string cukup sering kita gunakan. PHP menyediakan fungsi substr() untuk keperluan ini. Dengan 6 kombinasi, fungsi substr() sangat praktis untuk memotong sebuah string atau mengambil sebagian nilai dari sebuah string di dalam PHP.
Min, Misal ada 10 huruf, kalo ingin menampilkan dari 1 sampai 5 gmna ? soalnya kalo substr($kal,0,5) kebacanya yang ke 6, kalau substr($kal,1,5) munculnya dari huruf ke2. Mohon pencerahannya :v
Maksudnya 5 huruf pertama y gan? gimana kalau substr($kal,0,4)
Gak substr ($kal,0,5) ya bang?? kalau ($kal,0,4) hanya menampilkan 4 huruf pertama, mohon maaf sbelumnya
Eh iya, betul… seharusnya substr($kal,0,5). Terimakasih koreksinya :)
kalau mau memotong kalimat tanpa menggunakan substr tapi menggunakan array bisa tidak? jika bisa tolong jelaskan bagaimana caranya. terima kasish sebelumnya.
di encode dulu aja
spasi di itung ga gan?
Yup diitung gan…
kalau memotong kalimat jadi 2 kalimat gimana gan ?
tanpa memotong kata.
Untuk kasus yang lebih rumit seperti ini bisa menggunakan Regular Expression gan. Misalnya apa yang menandakan sebuah kalimat? umumnya sebuah kalimat dibatasi dengan tanda . ! ? : ;. Jadi sebuah paragraf bisa dipecah menggunakan fungsi preg_split('/[.?!]/',$mystring). Penjelasan fungsi ini cukup panjang, dan butuh pemahaman tentang regular expression.
Sumber: http://stackoverflow.com/questions/10494176/explode-a-paragraph-into-sentences-in-php
om andre saya dapet tugas untuk substring kalo ada kata "papih" dan ingin menampilkan "pihpih" apakah masih bisa pake substr atau menggunakan pengulangan juga? mohon petunjuknya, terimakasih
Kalau untuk mengganti sebuah kata dengan kata lain, bisa coba fungsi str_replace() gan. Saya memang belum sempat buat tutorialnya, tapi bisa cek ke http://php.net/manual/en/function.str-replace.php
kalau misal merubah variabel string $s = "210923" agar bisa jadi seperti ini "21:09:23" caranya gimana gan . . . . . ?????
function waktu($s)
{
$jam = substr ($s, 0, 2);
$menit = substr ($s, 2, 2);
$detik = substr ($s, 4, 2);
echo $jam . ":" . $menit . ":" . $detik;
}
echo "<br/>";
waktu (210923);
echo "<br/>";
waktu (203102);
echo "<br/>";
waktu (181250);
?>
Gan, kalau di php ada ga sih library untuk menyimpulkan atau memberi rujukan dari array string dengan kata yang sering muncul. Seperti menentukan modus dalam statistika tetapi untuk kata bukan angka. thanks sebelumnya
Kalau dari fungsi bawaan PHP kayaknya g ada mas, cuma ada fungsi substr_count() yang bisa digunakan untuk menghitung berapa banyak sebuah kata muncul: http://php.net/manual/en/function.substr-count.php. Sepertinya harus dibuat sendiri tuh. Atau coba2 cari di https://packagist.org
gan kalau menyisipkan suatu string ke string dalam posisi tertentu gimana gan??
om, kalau mengambil inisial dari nama seseorang tanpa mengetahui jumlah huruf nya karena merupakan variabel gimana ya, contoh 'Dimas' di program akan tertera hanya d? atau rukmini maka tertera r? Thank you
Bisa seperti ini gan:
<?php
$nama = explode(" ", "Joni Fernandes Hutapea");
$inisial = "";
foreach ($nama as $kata) {
$inisial .= $kata[0];
}
echo $inisial;
?>
mau nanya saya ingin mengambil data 388801019571532 dan 387901011730531 dari tiga data dibawah ini
$string=SA Cash Dep NoBook
$string=DARI 387901006362539 KE 0004901005447502
$string=DARI 387901011730531 KE 0004901005454554
gimana yaa cara mememunculkan data 388801019571532 dan 387901011730531 tanpa membaca Cash Dep nya. mohon bantuannya sangat ya. terimakasih.
Kalau pencariannya sudah cukup rumit, bisa menggunakan regular expression sis. Tp ini memang sedikit rumit dan belum sempat saya buat tutorialnya. Bisa coba cari di google dengan keyword "PHP Regular Expression".
Min Misal mau ambil di belakang karakter /blabla, tulisan blabla'nya bisa berubah", otomatis jumlah hurufnya juga berubah, bagaimanakah kodenya?
Berubah jadi apa gan? tentu harus buat juga kode programnya pengen berubah jadi apa.
Untuk yang seperti ini fungsi substr() bisa dikombinasikan dengan fungsi lain seperti strpos(). Kode programnya lumayan rumit tuh…
cara memberi spasi otomatis di inputan panjang tanpa sepasi gimana cara nya,?
contoh
abcdef12345abcdf12355
ketika sudah di beri sepasi otomatis
jadi
abcdef 12345 abcdef 12345
cara nya gimana ya,? untuk mengantisipasin inputan orang iseng yg merusak tampilan,? itu?
Bisa seperti ini:
<?php
$array_split = (str_split("abcdef12345abcdf12355",5));
$hasil = implode(" ",$array_split);
echo $hasil; // abcde f1234 5abcd f1235 5
?>
Min klo nambahin gimna..misal
Belajar PHP di Duniailkom jadi Belajar PHP di Duniailkom.html ?
Kalau untuk pemambahan string cukup pakai operator titik, jadinya:
<?php
$kalimat = "Belajar PHP di Duniailkom";
$kalimat_baru = $kalimat."html";
echo $kalimat_baru;
?>
Bkan.. mksudnya gini
saya ada bbrpa pos di blog yg trsimpan .txt lalu di ambil pke file_get_contents ke blog.php
dengan hsil di get
misal
http://www.com/blog.php?postid=1
Nah saya ubah itu pke .htaccess
jdi http://www.com/1
lalu di tampilin di index.php dengan cara di file_get_content lagi
nah ada di hlaman index
/1
/2 dst
nah supaya jadi http://www.com/1.html
/2.html /3.html itu gimna?
Klo pke .htaccess jdi di depan
/.html1
mohon pencerahanya suhu
Dimana ya tempat ngatur setting fungsi substr ini ?
Maklum newbie lg belajar bikin web
Fungsi substr() merupakan function bawaan PHP dan tidak memerlukan setingan apapun. Jika baru mulai belajar web programming, sebaiknya mulai dari HTML-> CSS -> PHP. Penjelasannya bisa kesini: https://www.duniailkom.com/ingin-belajar-web-programming-harus-mulai-dari-mana/
min, kalo aplikasinya pakai turbo c++ gimana rumus mencari karakter yang left,mid,sama rightnya?
Saya sudah lama g pelajari C++ lagi gan, jadi belum bisa bantu nih…
$saya = saya adalah penulis bla bla bla bla
yang ingin saya tampilkan adalah
saya adalah pe…..
gmana ya min…
Tinggal gabungkan hasil dari fungsi substr dengan string "…", seperti contoh berikut:
<?php
$saya = "saya adalah penulis bla bla bla bla";
$hasil = substr($saya,0,14)."…";
echo $hasil;
?>
gan kalo misalnya saya mau ngerubah kata "Komisi Pemilu" jadi singkatan "KP" gimana solusinya
Kalau kata dan singkatannya sudah fix (misalnya ada 10 kata), agan bisa buat sebuah program pencarian string, mirip seperti fitur "find and replace". Untuk yang seperti ini harus menggabungkan berbagai fungsi2 PHP, atau bisa baca2 tentang fungsi str_replace(): php.net/manual/en/function.str-replace.php
misi mas mau tanya, misal saya punya angka 2.534.435 dan saya ingin merubah mnjadi 2.000.000, 400000, 50000.. itu apa dengan fungsi substr?
Kalau yang seperti itu dihitung pakai rumus matematis, bukan pakai fungsi substr().
Soal seperti ini umum dipakai ketika belajar algoritma. Idenya, setiap angka dibagi ke kelipatan 1.000.000, 100.000, 10.000 ..dst, dengan menggunakan operator div (pembagian bulat) dan mod (sisa hasil bagi).
Angka 2.534.435 dibagi dengan 1.000.000, ambil angka bulatnya (2), simpan sisanya (534.435). Lalu lanjut 534.435 dibagi 100.000, ambil angka bulatnya (5), simpan sisanya (34.435). Begitu seterusnya hingga satuan.
saya ada 2 data
f0595504b3fa0d13d02f7eee38d17a1b MD5 : Zata212121
a462e770c4bc31b38ff08312ba748db8 MD5 : karangasem9
ingin mengambil
Zata212121
karangasem9
saya lakukan pada tutor diatas, yang kebaca hanya Zata212121 (kata pertama), kata2 dibawahnya tidak bisa diambil, gmn caranya ya supaya bisa semua?
Kalau stringnya akan selalu dalam format tersebut, dimana yang berubah2 hanya hasil reverse hashing saja, bisa menggunakan kode seperti ini:
<?php
$a="f0595504b3fa0d13d02f7eee38d17a1b MD5 : Zata212121";
$b="a462e770c4bc31b38ff08312ba748db8 MD5 : karangasem9";
echo substr($a,39); // Zata212121
echo "<br>";
echo substr($b,39); // karangasem9
?>
Saya sangat berharap ini akan jadi program selanjudnya
kalau di dalam array contohnya : Write a code that process an array of NIM's ['16511111111', '1551111111', '16511111111', …] and extracts the years ['16', '15', '16', …].
Aslmkm ,.. mas saya mau nanya kalo misal kita mua ambil bagian dari url gimana caranya yah.Misal
http://localhost/workshop/admin.Nah saya mau ambil admin nya saja bagaimana caranya yah
Saya mau ambil data kecamatan dari field alamat yg jumlah karakternya beda2 mas.
Contoh:
Record 1 : Jl. semeru, no.5, Dusun Permata, Desa Arjosari, Kecamatan Winangun, Kab. Kediri
Record 2 : Jl. Ababil, nomor 35, Lingkungan Bahari, Kel. Dukuh Atas, Kec. Kutorejo, Kabupaten Kebumen, Jawa Tengah
Nah, saya cuma mau ambil nama kecamatan dstnya, menjadi
Record 1 : Winangun, Kab. Kediri
Record 2 : Kutorejo, Kabupaten Kebumen, Jawa Tengah
Query nya jd spt apa mas ? Makasih sebelumnya
Agak susah nih, karena tidak ada polanya. Kalau semua string diawali dengan "Kecamatan", kita bisa ambil string ini sebagai penentu pola, tapi di alamat kadang ditulis sebagai "Kec.", "Kec" atau malah tidak ada sama sekali, misalnya:
Record 1 : Jl. semeru, no.5, Dusun Permata, Desa Arjosari, Winangun, Kediri
Jadi sudah mau buat query seperti apa, dan kalaupun ada harus menggunakan regular expression yang cukup rumit.
Okeh, kalo seumpama stringnya diawali Kecamatan bukan yg lain spt Kec. atau Kec, query nya jd gmn gan ? sy blm familiar dgn regular expression.
cara nyisipin text inputan dari 1234567 menjadi 1-23-45-67 gimana ya gan ?
makasih gan,,
masalah penomoran otomatis di tugas ane terpecahkan
TOP dah,,,
Mas,menurut Saya Maunya Dunia Ilkom punya aplikasi di play store spy lebih gampang mencarinya mas.karna Saya lihat Dunia Ilkom sangat Bagus materinya.
Terimakasih, Request ditampung… iya nih, belum sempat buat versi app-nya :D
Mas kalau misal Rizki/Indonesia/123456789
Untuk Ambil 123456789 itu gimana ya, substr harus digabungkan dengan fungsi apa ya ??
Kalau di Excel biasanya bisa digabungkan dengan fungsi find, apakah di PHP ada fungsi sejenis itu ??
Karena Kata Rizki/Indonesia bisa berubah" jumlahnya Terimakasih
Untuk yang seperti ini harus memakai regular expression. Bisa coba referensi tentang cara penggunaan fungsi preg_match() di PHP.
Bagaimana cara memotong string dengan parameter kata awal dan kata akhir sebagai batas pengambilan kalimat?
Contoh memotong/mengambil kalimat abstrak dalam sebuah skripsi, jadi parameter kata awal 'Abstrak' dan kata akhir 'Kata kunci'
mas kalo misal mau jadiin nama yang habis diinputin jadi dipexah gimana mas?, misal aku ada inputan dono kasino indro, nah yan di ambil cuma 3 huruf dari setiap kata terdepan, jadinya donkasin, kalo kaya gini gimana?, mohon pencerahannya
pak saya mau tanya bagaimana angka number yang di batasi koma contoh: 23,87900 jadi angka1: 23 dan angka2 : 87900 tanpa dibulatkan dan jumlah digit nya dinamis. terima kasih sebelumnya
cara mengambil text baris genap bagaimana