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

Dalam pemrosesan string, kadang kita butuh untuk mencari posisi sebuah karakter di dalam string. Untuk keperluan ini PHP memiliki fungsi bawaan, yakni strpos(). Kali ini saya akan membahas pengertian fungsi strpos() dan cara penggunaan fungsi strpos() di dalam PHP. Selain itu kita juga membahas fungsi stripos().


Pengertian Fungsi strpos()

Fungsi strpos() adalah fungsi bawaan PHP yang bisa digunakan untuk mencari posisi sebuah karakter atau sebuah string di dalam string lainnya. Hasil akhir fungsi ini adalah angka yang menunjukkan posisi karakter/string yang ingin dicari.

Berikut format dasar penulisan fungsi strpos() di dalam PHP:

mixed strpos (string $haystack , mixed $needle [, int $offset = 0 ] )
  • Hasil akhir fungsi strpos adalah mixed, karena bisa berupa angka (posisi ditemukannya karakter yang ingin dicari), maupun FALSE jika fungsi ini tidak menemukan nilai apa-apa.
  • Argumen pertama ($haystack) berupa string asal dimana pencarian akan dilakukan. String ini bisa 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 bisa 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 mengabaikan beberapa kalimat awal pencarian.

Agar lebih mudah dipahami, langsung saja kita membahas contoh penggunaannya:

<?php
$kalimat="Sedang serius belajar PHP di duniailkom";
$posisi=strpos($kalimat,"e");
echo $posisi;
// 1
?>

Hasil angka 1 dari kode program diatas menunjukkan karakter 'e' pertama dalam string $kalimat. Perlu diingat bahwa di dalam PHP penomoran index string dimulai dari angka 0. Sehingga posisi 1 diatas sebenarnya berada pada karakter ke-2.

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

<?php
$kalimat="Sedang serius belajar PHP di duniailkom";
$cari="serius";
$posisi=strpos($kalimat,$cari);
echo $posisi;
// 7
?>

Dalam kode program diatas, saya menempatkan string "serius" di dalam sebuah variabel, dan mencari posisinya dengan fungsi strpos(). Hasilnya, kata "serius" di temukan dan berada pada index ke-7.

Bagaimana jika di dalam string tidak ditemukan apa-apa? Mari kita coba:

<?php
$kalimat="Sedang serius belajar PHP di duniailkom";
$posisi=strpos($kalimat,"CSS",9);
var_dump($posisi);
// bool(false)
?>

Hasilnya: FALSE. Saya sengaja menggunakan fungsi var_dump() karena jika menggunakan echo, tidak akan terdapat tampilan apa-apa. Ini terjadi karena perintah echo mengkonversi boolean FALSE menjadi string kosong dan menampilkannya.

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

<?php
$kalimat="Sedang serius belajar PHP di duniailkom";
$posisi=strpos($kalimat,"CSS");
if ($posisi){
  echo "Ketemu";
}
else {
  echo "Tidak ketemu";
}
// Tidak ketemu
?>

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

<?php
$kalimat="Sedang serius belajar PHP di duniailkom";
$posisi=strpos($kalimat,"Sedang");
if ($posisi){
  echo "Ketemu";
}
else {
  echo "Tidak ketemu";
}
// Tidak ketemu
?>

Hasilnya adalah: "Tidak ketemu" ! Padahal seperti yang kita lihat di dalam string asal, kata "Sedang" ada di posisi pertama string. Apa yang terjadi?

Ini karena efek 'type juggling' dimana PHP akan menkonversi sebuah tipe data ke tipe data lain secara otomatis. Hasil dari fungsi strpos($kalimat,"Sedang") adalah 0, karena kata "Sedang" ditemukan di awal string, dan indexnya adalah 0. Namun sewaktu kita menggunakan hasil ini dalam kondisi IF, nilai 0 akan dikonversi menjadi FALSE, sehingga hasilnya adalah: "Tidak ketemu".

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

<?php
$kalimat="Sedang serius belajar PHP di duniailkom";
$posisi=strpos($kalimat,"Sedang");
if ($posisi !== FALSE){
  echo "Ketemu";
}
else {
  echo "Tidak ketemu";
}
// Ketemu
?>

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

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

<?php
$kalimat="Sedang serius belajar PHP di duniailkom";
$posisi=strpos($kalimat,"e",9);
echo $posisi;
// 15
?>

Argumen ketiga dari fungsi strpos() berfungsi untuk 'melompati' beberapa karakter awal. Dalam contoh diatas, karakter "e" yang ingin dicari sebenarnya sudah ditemukan pada index ke-1 dan ke-8. Namun karena saya menambahkan argumen ke-3 dengan nilai 9, maka proses pencarian baru dilakukan mulai dari index ke-9.


Pengertian Fungsi stripos()

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

<?php
$kalimat="Sedang serius belajar PHP di duniailkom";
$posisi=strpos($kalimat,"php",9);
var_dump($posisi);
// bool(false)
?>

Ini terjadi karena fungsi strpos() akan membedakan antara "php" dengan "PHP". Kedua kata ini akan dianggap berbeda, sehingga karakter "php" tidak ditemukan.

Jika kita ingin untuk mengabaikan perbedaan ini, bisa menggunakan fungsi stripos(). Penambahan huruf 'i' disini menunjukkan bahwa fungsi stripos() bersifat case-insensitive. Yang berarti akan mengabaikan perbedaan huruf besar dan kecil. Fungsi stripos()juga mendukung argumen yang sama seperti fungsi strpos().

Berikut adalah hasil kode program diatas jika menggunakan fungsi stripos():

<?php
$kalimat="Sedang serius belajar PHP di duniailkom";
$posisi=stripos($kalimat,"php",9);
echo $posisi;
// 22
?>

Kali ini karakter 'php' ditemukan pada posisi index ke-22, dimana kata "PHP" berada.


Fungsi strpos() dan stripos() yang kita bahas disini sebenarnya cukup sederhana. Dalam prakteknya, fungsi ini biasa digabung dengan fungsi string lain, misalkan dengan fungsi substr_replace() untuk membuat program pencari kata atau menambahkan fitur find and replace.

23 Comments

  1. Derry Alif
    11 Aug 15
    • Andre
      11 Aug 15
  2. Anonymous
    26 Apr 16
    • Andre
      26 Apr 16
  3. Anonymous
    28 Apr 16
    • Andre
      28 Apr 16
  4. Anonymous
    28 Apr 16
  5. leo
    11 Jun 16
  6. leo
    19 Jun 16
  7. adhika
    26 Jul 16
    • Andre
      27 Jul 16
      • Khibar Pranoto
        04 Jun 20
  8. Apriliyanto
    13 Sep 16
    • Andre
      10 Oct 16
  9. Azhar MZ
    09 Oct 16
    • Andre
      10 Oct 16
  10. Kurnain Ramadhan
    28 Dec 16
  11. Erick
    22 Mar 17
    • Andre
      22 Mar 17
  12. jo
    17 Nov 21
    • Andre
      17 Nov 21

Add Comment

Leave a Reply to Erick Cancel reply