Fungsi strpos() Pada Fungsi PHP
Berikut adalah artikel yang membahas fungsi
strpos()
pada PHP secara menyeluruh, mulai dari
pengertian, sintaks, hingga contoh penerapan pada berbagai skenario
pengembangan web.
1. Pengenalan Fungsi strpos()
Fungsi strpos()
dalam PHP digunakan untuk
mencari posisi (indeks) dari substring tertentu di dalam
sebuah string utama. Fungsi ini sangat berguna ketika Anda perlu mengetahui
di mana suatu kata, karakter, atau tanda tertentu pertama kali muncul di
sebuah teks.
Beberapa contoh kasus penggunaan: - Memvalidasi apakah string berisi kata
atau karakter yang dilarang.
- Mencari lokasi specific token untuk memisahkan atau memanipulasi
string.
- Mengecek format tertentu (misalnya keberadaan @
pada alamat
email).
2. Sintaks strpos()
Sintaks dasar strpos()
adalah sebagai berikut:
strpos(
string $haystack,
string $needle,
int $offset = 0
: int|false )
Penjelasan parameter:
-
$haystack
- String tempat kita akan melakukan pencarian.
- **\(needle** - Substring atau karakter yang dicari di dalam `\)haystack`.
-
$offset (opsional)
- Posisi awal (dari depan string) tempat memulai pencarian. Default-nya
adalah
0
(mulai dari karakter pertama). - Nilai positif berarti lewati sejumlah karakter sesuai offset.
- Nilai negatif tidak valid; jika diisi negatif, hasilnya bisa tidak terduga.
- Posisi awal (dari depan string) tempat memulai pencarian. Default-nya
adalah
Fungsi strpos()
akan mengembalikan: - Integer:
posisi (indeks) pertama kali needle
ditemukan di dalam
$haystack
.
- false
: jika needle
tidak
ditemukan sama sekali.
Catatan: Indeks karakter pertama pada string di PHP adalah 0.
3. Penjelasan Lengkap
3.1 Indeks Pengembalian
Ketika strpos()
menemukan substring, posisi yang dikembalikan
sesuai dengan indeks pertama dari needle
di
dalam haystack
. Misalnya, jika needle
muncul di
awal string, maka nilai yang dikembalikan adalah 0
.
3.2 Perbedaan dengan stripos()
stripos()
mirip dengan strpos()
, tetapi
case-insensitive, artinya tidak membedakan huruf besar dan
huruf kecil. Pada stripos()
, pencarian substring “Halo” di “hALo
Dunia” tetap akan dianggap sama.
3.3 Harap Perhatikan Tipe Data false
Mengecek hasil strpos()
membutuhkan kehati-hatian karena jika
substring ditemukan di posisi 0, maka hasilnya adalah integer 0
,
yang dalam konteks boolean dianggap false
pula. Gunakan operator
identik ===
untuk membedakan indeks
0
dan false
sebagai return value.
Contoh kecil:
<?php
$pos = strpos("Halo", "H");
if ($pos === false) {
echo "Substring tidak ditemukan.";
else {
} echo "Substring ditemukan di indeks: $pos";
}// Output: Substring ditemukan di indeks: 0
Kalau memakai if ($pos)
saja, maka 0
dianggap
false
, padahal substring ditemukan di indeks 0.
3.4 Penggunaan $offset
strpos()
juga memiliki parameter ketiga $offset
untuk menentukan dari mana pencarian dimulai. Jika $offset
bernilai 5, berarti string dipindai mulai dari karakter ke-5 (indeks ke-5).
- Positif: Mulai pencarian setelah melewati jumlah karakter tertentu.
- Negatif: Tidak disarankan karena dapat menimbulkan perilaku tak terduga.
4. Contoh Penggunaan pada Berbagai Kasus
4.1 Mencari Keberadaan Karakter dalam String
Contoh Kasus
Anda ingin memeriksa apakah dalam string “Halo Dunia” terdapat huruf “D”.
<?php
$text = "Halo Dunia";
$pos = strpos($text, "D");
if ($pos === false) {
echo "Huruf 'D' tidak ditemukan.";
else {
} echo "Huruf 'D' ditemukan di indeks: $pos";
}// Output: Huruf 'D' ditemukan di indeks: 5
- Indeks 0 = ‘H’, 1 = ‘a’, 2 = ‘l’, 3 = ‘o’, 4 = ’ ‘, 5 = ’D’.
4.2 Mencari Kata (Substring)
Contoh Kasus
Anda ingin mencari kata “PHP” dalam kalimat "Saya suka PHP dan
JavaScript"
.
<?php
$text = "Saya suka PHP dan JavaScript";
$pos = strpos($text, "PHP");
if ($pos === false) {
echo "Kata 'PHP' tidak ada di dalam string.";
else {
} echo "'PHP' ditemukan di indeks: $pos";
}// Output: 'PHP' ditemukan di indeks: 10
4.3 Penggunaan Bersama substr()
untuk Ekstraksi Bagian Teks
Setelah menemukan posisi substring, Anda dapat mengambil bagian teks tertentu
menggunakan substr()
. Misalnya, mencari
@
di alamat email, lalu mengambil domain-nya.
Contoh Kasus
<?php
$email = "user@example.com";
$pos = strpos($email, "@");
if ($pos !== false) {
// Ambil bagian setelah '@'
$domain = substr($email, $pos + 1);
echo "Domain: $domain";
else {
} echo "Email tidak valid.";
}// Output: Domain: example.com
4.4 Menggunakan Offset
Anda dapat menggunakan $offset
untuk melanjutkan pencarian
setelah posisi tertentu. Misalnya, dalam string "HaloHalo"
, Anda
ingin mencari “Halo” yang kedua.
<?php
$text = "HaloHalo";
$firstPos = strpos($text, "Halo"); // seharusnya 0
$secondPos = strpos($text, "Halo", $firstPos + 1);
echo "Posisi pertama: $firstPos\n";
echo "Posisi kedua: $secondPos\n";
// Output:
// Posisi pertama: 0
// Posisi kedua: 4
Di sini, pada pencarian kedua ($secondPos
), kita mulai mencari
dari indeks firstPos + 1
yaitu 1
, sehingga bisa
menemukan “Halo” berikutnya pada indeks 4.
4.5 Memvalidasi Format Data
Contoh Kasus
Memeriksa apakah string mengandung karakter “-” untuk memvalidasi format nomor telepon (contoh sederhana).
<?php
$phoneNumber = "0812-345-6789";
$check = strpos($phoneNumber, "-");
if ($check === false) {
echo "Nomor telepon tidak mengandung '-'";
else {
} echo "Format nomor telepon mengandung '-'";
}// Output: Format nomor telepon mengandung '-'
4.6 Case-Insensitive
Jika Anda memerlukan pencarian yang tidak membedakan huruf besar dan kecil,
gunakan stripos()
. Namun, cara kerja dan
hasilnya secara umum sama.
<?php
$text = "Halo Dunia!";
$pos = stripos($text, "halo");
if ($pos === false) {
echo "Tidak ditemukan.";
else {
} echo "Kata 'halo' ditemukan di indeks: $pos";
}// Output: Kata 'halo' ditemukan di indeks: 0
5. Tips dan Trik
-
Perhatikan Tipe Kembalian
Gunakan perbandingan identik (===
) untuk membedakan indeks0
denganfalse
. -
Gunakan
stripos()
untuk Case-Insensitive
Berguna bila Anda tidak peduli huruf besar/kecil. -
Validasi Data
strpos()
sering dimanfaatkan untuk memvalidasi pola string sederhana, meski untuk pola yang rumit biasanya lebih baik memakai regular expression (preg_match()
). -
Offset untuk Pencarian Berikutnya
Jika Anda perlu menemukan beberapa kemunculan substring, Anda bisa memakai hasil pencarian pertama dan menggunakannya sebagai offset untuk pencarian kedua, ketiga, dan seterusnya. -
Tidak untuk Karakter Multibyte?
Jika Anda bekerja dengan karakter multibyte (misalnya huruf non-ASCII), maka gunakan fungsi sepertimb_strpos()
agar indeks yang dihitung akurat.
Fungsi strpos()
di PHP sangat bermanfaat untuk
menentukan posisi substring (karakter atau rangkaian karakter) dalam sebuah
string. Dengan parameter $offset
, Anda juga dapat mengatur
posisi awal pencarian, sehingga cocok untuk mencatat posisi kemunculan
pertama, kedua, dan seterusnya.
Perlu diperhatikan bahwa hasil 0
dan false
dapat
membingungkan jika Anda hanya memakai pengecekan if ($pos)
.
Gunakan operator identik ===
agar logika tetap
akurat. Jika membutuhkan pencarian yang tidak memperhatikan huruf
besar/kecil, gunakan fungsi stripos()
, atau
jika membutuhkan dukungan karakter multibyte, pertimbangkan
mb_strpos()
.
Dengan memahami fitur dan batasan strpos()
, Anda akan lebih
mudah mengimplementasikannya dalam berbagai kebutuhan pemrograman string di
PHP. Semoga artikel ini membantu Anda memanfaatkan strpos()
secara efektif!
Baca Juga :