ReferenSea
ReferenSea adalah blog mengenai ilmu pengetahuan.
int strpos (tumpukan jerami string, jarum string [, offset offset])
int stripo (tumpukan jerami string, jarum string [, offset offset])
Strpos (), dan strip saudara kembarnya yang case-insensitive (), mengembalikan indeks kemunculan substring pertama dalam string. Lebih mudah dijelaskan dalam kode, jadi begini:
<? php
$ string = " Ini adalah tes strpos () ";
cetak strpos ($ string, " a "). " \ n ";
? >
Itu akan menghasilkan 8, karena karakter pertama dalam " Ini adalah tes strpos () " itu adalah huruf kecil A berada di indeks 8. Ingat bahwa PHP menganggap huruf pertama dari string menjadi indeks 0, yang berarti bahwa A strpos () yang ditemukan sebenarnya adalah karakter kesembilan.
Anda dapat menentukan seluruh kata dalam parameter dua, yang akan membuat strpos () mengembalikan posisi pertama kata itu di dalam string, misalnya strpos ($ string, " test ") akan mengembalikan 19 - indeks huruf pertama dalam kata yang cocok.
Jika substring yang dikirim dalam parameter dua tidak ditemukan di parameter satu, strpos () akan mengembalikan false. Pertimbangkan skrip ini:
<? php
$ string = " Ini adalah tes strpos () ";
$ pos = strpos ($ string, " Ini ");
if ($ pos == false) {
cetak " Tidak ditemukan \ n ";
} lain {
cetak " Ditemukan! \ n ";
}
? >
Jika Anda mencoba mengeksekusinya, Anda akan mendapati bahwa output " Tidak ditemukan ", meskipun " Ini " cukup jelas berada di $ string. Apakah ini masalah sensitivitas kasus lainnya? Tidak terlalu. Kali ini masalahnya terletak pada kenyataan bahwa " Ini " adalah hal pertama dalam $ string, yang berarti bahwa strpos () akan mengembalikan 0. Namun, PHP menganggap 0 sebagai nilai yang sama dengan false, yang berarti bahwa pernyataan if kita tidak dapat membedakan antara " Substring tidak ditemukan " dan " Substring ditemukan pada indeks 0 " - cukup masalah!
Untungnya, PHP datang untuk menyelamatkan dengan operator ===, yang, jika Anda ingat, berarti " identik dengan ", yang berarti $ pos harus sama dengan false dan dari jenis yang sama dengan false (boolean). Jika " Ini " ditemukan dalam $ string, strpos () akan mengembalikan 0, tetapi akan bertipe integer. Jika kita mengubah pernyataan if kita untuk menggunakan === daripada ==, PHP akan memeriksa nilai 0 dan false dan menemukan mereka cocok (keduanya salah), lalu periksa jenis 0 dan false, dan menemukan bahwa mereka tidak cocok - yang pertama adalah bilangan bulat, dan yang terakhir adalah boolean.
Jadi, versi naskah yang diperbaiki adalah ini:
<? php
$ string = " Ini adalah tes strpos () ";
$ pos = strpos ($ string, " Ini ");
if ($ pos === false) {
cetak " Tidak ditemukan \ n ";
} lain {
cetak " Ditemukan! \ n ";
}
? >
Sekarang, pertimbangkan skrip berikut ini, yang mencoba mencocokkan dengan " i " di " adalah ":
<? php
$ string = " Ini adalah tes strpos () ";
$ pos = strpos ($ string, " i ");
if ($ pos === false) {
cetak " Tidak ditemukan \ n ";
} lain {
cetak " Ditemukan di $ pos! \ n ";
}
? >
Masalahnya adalah strpos () cocok dengan yang pertama " i " itu ada di, yang akan berada di " Ini ". Untungnya ada parameter ketiga untuk strpos () yang memungkinkan kita menentukan dari mana harus memulai. Sebagai tautan " i " di " Ini " berada di indeks 2, kita hanya perlu menentukan satu tempat setelah itu (3) sebagai posisi awal untuk strpos (), dan itu akan melaporkan kembali tempat berikutnya " i " setelah itu. Sebagai contoh:
<? php
$ string = " Ini adalah tes strpos () ";
$ pos = strpos ($ string, " i ", 3);
if ($ pos === false) {
cetak " Tidak ditemukan \ n ";
} lain {
cetak " Ditemukan di $ pos! \ n ";
}
? >
Kali ini yang akan mencetak " ditemukan di 5! &Quot;, yang merupakan posisi " i " di " adalah ".
Ingin belajar PHP 7?
Peretasan dengan PHP telah sepenuhnya diperbarui untuk PHP 7, dan sekarang tersedia sebagai PDF yang dapat diunduh. Dapatkan lebih dari 1.200 halaman pembelajaran PHP langsung hari ini!
Jika ini bermanfaat, luangkan waktu sejenak untuk memberi tahu orang lain tentang Meretas dengan PHP dengan men-tweet tentang hal itu!
Bab selanjutnya: Mengembalikan kemunculan pertama string > >
Bab sebelumnya: Mengukur string
Lompat ke:
Beranda: Daftar Isi
Hak Cipta © 2015 Paul Hudson. Ikuti saya: @twostraws.