Tutorial PHP: Cara Mencari Posisi String PHP (Fungsi strpos)

Posted on

Di pemrosesan string, kadang kita butuh untuk mencari posisi sebuah karakter di di string. Untuk keperluan ini PHP mempunyai kegunaan bawaan, yakni strpos(). Kali ini saya akan membahas pengertian fungsi strpos() dan cara pemakaian kegunaan strpos() di di PHP. Selain itu kita pun membahas kegunaan stripos().


Pengertian Manfaat strpos()

Manfaat strpos() ialah kegunaan bawaan PHP yang dapat digunakan untuk mencari posisi sebuah karakter atau sebuah string di di string lainnya. Hasil ahir kegunaan ini ialah angka yang menunjukkan posisi karakter/string yang ingin dicari.

Berikut format mendasar penulisan kegunaan strpos() di di PHP:

  • Hasil ahir kegunaan strpos ialah mixed, karena dapat berupa angka (posisi ditemukannya karakter yang ingin dicari), maupun FALSE seandainya kegunaan ini tak menemukan nilai apa-apa.
  • Argumen pertama-tama ($haystack) berupa string asal dimana pencarian akan dilakukan. String ini dapat terdiri dari sebuah kalimat pendek hingga dokumen string panjang yang terdiri dari ribuan huruf.
  • Argumen kedua ($needle) diisi dengan karakter yang akan dicari. Karakter disini dapat berupa sebuah huruf/angka atau string lain seperti kalimat.
  • Argumen ketiga ($offset) bersifat opsional, digunakan untuk ‘melompati’ hasil pencarian dari posisi tertentu. Ini digunakan untuk menyampingkan beberapa kalimat awal pencarian.

Agar lebih gampang dimengerti, seketika saja kita membahas contoh penggunaannya:

Hasil angka 1 dari kode program diatas menunjukkan karakter ‘e’ pertama-tama di string $kalimat. Perlu diingat bahwa di di PHP penomoran index string dimulai dari angka 0. Sehingga posisi 1 diatas sesungguhnya berada di karakter ke-2.

Selain menggunakan 1 karakter, kita pun dapat mencari sebuah kata atau string lain, seperti contoh berikut:

Di kode program diatas, saya menempatkan string “serius” di di sebuah variabel, dan mencari posisinya dengan kegunaan strpos(). Hasilnya, kata “serius” di peroleh dan berada di index ke-7.

Bagaimana seandainya di di string tak ditemukan apa-apa? Mari kita coba:

Hasilnya: FALSE. Saya sengaja menggunakan kegunaan var_dump() karena seandainya menggunakan echo, tak akan terdapat tampilan apa-apa. Ini terjadi karena pedoman echo mengkonversi boolean FALSE menjadi string kosong dan menampilkannya.

Hasil FALSE ini dapat kita manfaatkan untuk membangun sebuah kondisi pemeriksaan apakah karakter yang ingin dicari ada di di string, seperti contoh berikut:

Dengan membangun kondisi seperti itu, kita dapat membangun kode program untuk menentukan ada tidaknya sebuah karakter. Akan tetapi, efek ‘konversi tipe data otomatis’ dari PHP dapat menimbulkan masalah tersendiri. Perhatikan kode berikut ini:

Hasilnya ialah: “Tak ketemu” ! Padahal seperti yang kita lihat di di string asal, kata “Sedang” ada di posisi pertama-tama string. Apa yang terjadi?

Ini karena efek ‘type juggling’ dimana PHP akan menkonversi sebuah tipe data ke tipe data lain secara otomatis. Hasil dari kegunaan strpos($kalimat,”Sedang”) ialah 0, karena kata “Sedang” ditemukan di awal string, dan indexnya ialah 0. Namun sewaktu kita menggunakan hasil ini di kondisi IF, nilai 0 akan dikonversi menjadi FALSE, sehingga hasilnya ialah: “Tak ketemu”.

Agar kode program kita bebas dari masalah ini, dapat mengubah kondisi pemeriksaan IF menjadi seperti berikut ini:

Kali ini saya memaksa PHP untuk memeriksa apakah nilai variabel $posisi mesti bertipe boolean FALSE. Kesalahan program seperti ini sering terjadi dan amat susah untuk ditemukan, karena PHP tak akan menampilkan pesan error apapun.

Kembali ke kegunaan strpos(), kali ini saya akan mencoba menambahkan argumen ke-3:

Argumen ketiga dari kegunaan strpos() berfungsi untuk ‘melompati’ beberapa karakter awal. Di contoh diatas, karakter “e” yang ingin dicari sesungguhnya telah ditemukan di index ke-1 dan ke-8. Namun karena saya menambahkan argumen ke-3 dengan nilai 9, karenanya proses pencarian baru dilakukan mulai dari index ke-9.


Pengertian Manfaat stripos()

Manfaat strpos() yang kita bahas disini bersifat case sensitif, yang berarti akan membedakan antara huruf besar dan huruf kecil. Selaku contoh, kode program berikut akan menghasilkan nilai FALSE:

Ini terjadi karena kegunaan strpos() akan membedakan antara “php” dengan “PHP”. Kedua kata ini akan dianggap berbeda, sehingga karakter “php” tak ditemukan.

Jikalau kita ingin untuk menyampingkan perbedaan ini, dapat menggunakan kegunaan stripos(). Penambahan huruf ‘i’ disini menunjukkan bahwa kegunaan stripos() bersifat case-insensitive. Yang berarti akan menyampingkan perbedaan huruf besar dan kecil. Manfaat stripos()pun mendukung argumen yang sama seperti kegunaan strpos().

Berikut ialah hasil kode program diatas seandainya menggunakan
kegunaan stripos():

Kali ini karakter ‘php’ ditemukan di posisi index ke-22, dimana kata “PHP” berada.


Manfaat strpos() dan stripos() yang kita bahas disini sesungguhnya lumayan sederhana. Di prakteknya, kegunaan ini lazim digabung dengan kegunaan string lain, misalkan dengan kegunaan substr_replace() untuk membangun program pencari kata atau menambahkan fitur find and replace.


Sumber https://www.duniailkom.com/