CodeigniterGenelPHPYazılım

strpos, strrpos ve strripos metotları nedir? Farkları nelerdir?

PHP string işleme fonksiyonları açısından zengin bir yazılım dilidir. String işleme fonksiyonları bir çok işlemi kolay bir şekilde yapmamızı sağlar. Bunlardan bazıları olan strpos, strrpos ve strripos fonksiyonlarıdır.

Peki bu fonksiyonlar arasında ne farklar vardır? Hemen inceleyelim.

strpos

strpos bir string ifade içerisinde, bir karakteri ya da string ifadeyi büyük ve küçük harf duyarlılığına da bağlı kalarak istenen offset değerinden itibaren arar ve ilk bulduğu indis’i döndürür. Metot zorunlu olarak bir string kaynak, bir de aranan karakter ya da string ifadeyi ister. Offset değeri ise default’da 0 olarak belirlenmiştir. Yani kaynak string’in tamamının içerisinde aranması istenmiştir. Buradaki değeri değiştirerek istenen kısımda da arama yapılabilir. Metodun tam gösterimi alttaki gibidir.

strpos(string $haystack, string $needle, int $offset = 0): int|false

Kullanım örneği;

$haystack = 'Araba';
$needle = 'a';
var_dump(strpos($haystack, $needle));

//Sonuç : int(2) yani ilk kez 2.indis'te 'a' karakterininin olduğunu buldu.

$needle = 'A';
var_dump(strpos($haystack, $needle));
//Sonuç : int(0) yani ilk kez 0.indis'te 'A' karakterininin olduğunu buldu.

$needle = 'k';
var_dump(strpos($haystack, $needle));
//Sonuç : bool(false) yani string içerisinde 'k' karakterinin olmadığını buldu.

$needle = 'ba';
var_dump(strpos($haystack, $needle));
//Sonuç : int(3) ilk kez yani 3.indis'te 'ba' string dizesinin olduğunu buldu.

//Şimdi offset değerini değiştirelim.

$needle = 'a';
$offset = 3;
var_dump(strpos($haystack, $needle, $offset));
//Sonuç : int(4) yani ilk kez 4.indis'te 'a' karakterinin olduğunu buldu. Çünkü offset'ten öncesini kontrol etmiyor.

strrpos

strrpos bir string ifade içerisinde, bir karakteri ya da string ifadeyi büyük ve küçük harf duyarlılığına da bağlı kalarak istenen offset değerinden itibaren arar ve son bulduğu indis’i döndürür. Metot zorunlu olarak bir string kaynak, bir de aranan karakter ya da string ifadeyi ister. Offset değeri ise default’da 0 olarak belirlenmiştir. Yani kaynak string’in tamamının içerisinde aranması istenmiştir. Buradaki değeri değiştirerek istenen kısımda da arama yapılabilir. Metodun tam gösterimi alttaki gibidir.

strrpos(string $haystack, string $needle, int $offset = 0): int|false

Kullanım örneği;

$haystack = 'Araba';
$needle = 'a';
var_dump(strrpos($haystack, $needle));

//Sonuç : int(4) yani son olarak 4.indis'te 'a' karakterininin olduğunu buldu.

$needle = 'A';
var_dump(strrpos($haystack, $needle));
//Sonuç : int(0) yani son olarak 0.indis'te 'A' karakterininin olduğunu buldu.

$needle = 'k';
var_dump(strrpos($haystack, $needle));
//Sonuç : bool(false) yani string içerisinde 'k' karakterinin olmadığını buldu.

$needle = 'ba';
var_dump(strrpos($haystack, $needle));
//Sonuç : int(3) yani son olarak 3.indis'te 'ba' string dizesinin olduğunu buldu.

//Şimdi offset değerini değiştirelim.

$needle = 'a';
$offset = 3;
var_dump(strrpos($haystack, $needle, $offset));
//Sonuç : int(4) yani son olarak 4.indis'te 'a' karakterinin olduğunu buldu.

strripos

strrpos bir string ifade içerisinde, bir karakteri ya da string ifadeyi büyük ve küçük harf duyarlılığına da bağlı kalmadan istenen offset değerinden itibaren arar ve son bulduğu indis’i döndürür. Metot zorunlu olarak bir string kaynak, bir de aranan karakter ya da string ifadeyi ister. Offset değeri ise default’da 0 olarak belirlenmiştir. Yani kaynak string’in tamamının içerisinde aranması istenmiştir. Buradaki değeri değiştirerek istenen kısımda da arama yapılabilir. Metodun tam gösterimi alttaki gibidir.

strripos(string $haystack, string $needle, int $offset = 0): int|false

Kullanım örneği;

Örneğimizdeki Araba ifadesini arabA olarak değiştirelim ve 3 farklı metot için de değerlendirelim.

$haystack = 'ArabA';
$needle = 'a';
var_dump(strpos($haystack, $needle)); //int(0)
var_dump(strrpos($haystack, $needle)); //int(2)
var_dump(strripos($haystack, $needle)); //int(4)

Son örnekte gördüğümüz gibi, strripos case insensitive olarak çalışmaktadır. Biz ‘a’ karakterini aramamıza rağmen bize ‘A’ nın indis değerini döndürmüştür.

Bir sonraki yazımızda görüşmek üzere. 🙂

Oğuzhan ÖZDEMİR

19 Ocak 1991 Bursa doğumlu Bilgisayar Mühendisiyim. Codeigniter, Kotlin, Android, MySQL ve iOS uygulamalar geliştiriyorum. Web kısmında CSS, HTML, JavaScript, jQuery konularına hakimim. Mayıs 2017 tarihinde Maltepe/İstanbul oradan da Çorlu /Tekirdağ'a giderek askerlik görevimi tamamladım. 2018 Mayıs ayında Bursa'da Durmazlar Makina Sanayi ve Tic. A.Ş. firmasında Bilgi Teknolojileri Uzman Yardımcısı olarak işe başladım. İletişim: ogzhnozdmr@gmail.com

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.