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. 🙂