PHP’de String (Metin) Karşılaştırmaları

P

Herhangi bir programlama dilinde  her zaman bir takım değerleri birbirleriyle karşılaştırma ihtiyacı duyarız. Eğer ki değerler Doğru/Yanlış veya tamsayı ise bunların karşılaştırma yapıp bir sonuca varmak o kadar da zor değildir. Ancak eğer ki bir cümle içerisindeki bir kısım karakterleri birbirleri ile karşılaştırma ihtiyacı duyduğumuzda bu bizi biraz zorlayabilir.

Aşağıdaki kod örneğinde String değerlerin karşılaştırmalarını PHP kütüphanesinde bulunan dahili fonksiyonları kullanarak bir çok yönden inceleyeceğiz.

== eşitlik operatörü

İki değeri birbiriyle karşılaştırmak istediğimizde en yaygın kullanılan yöntem == operatörünü kullanmaktır.Eğer ki iki değer de birbirine eşit ise True döndürür, basitçe kullanımına örnek vermek gerekir ise;

// == operator, Değerler birbiri ile aynı olduğu için “değerler aynı” ibaresi yazar.

if('deger1' == 'deger1')
{
    echo 'degerler aynı.';
} else {
    echo 'degerler uyusmuyor';
}

Yukarıdaki kod bloğu “değerler aynı” ibaresini yazdıracaktır, fakat diyelim ki karşılaştırma yaptığımız değerlerden birinin harflerini büyük yazdık bu durumda “değerler uyuşmuyor” ibaresini göreceksiniz çünkü == operatörü büyük ve küçük uyumunu da kontrol eder , bu gibi kontroller kullanıcı adı ve şifre girişlerini kontrol ederken işe yarayabilir.

 // == bu kez değer uyuşmuyor ifadesi yazdırılacaktır.

if('deger1' == 'DEGER1')
{
    echo 'degerler uyuşuyor';
} else {
    echo 'değerler uyuşmuyor';
}

Kısacası == operatörünü kullanıcı girişlerini kontrol etmek için kullanamayız çünkü kullanıcı ilk değerin ilk harfini dahi büyük yazsa “değerler uyuşmuyor” if bloğu çalışacaktır.Bu yüzden PHP de String değerleri karşılaştırmak için kullanabileceğimiz bir fonksiyon bulunmaktadır.

strcmp Fonksiyonu

String değerleri karşılaştırmanın diğer bir yolu strcmp PHP fonksiyonunu kullanmaktır, ikili güvenli string karşılaştırma fonksiyonu olan bu fonksiyon bize değerler uyuştuğunda 0 döndürecektir.

// strcmp fonksiyonu, değerler uyuşuyor yazacak

if(strcmp('deger1', 'deger1') == 0)
{
     echo 'degerler uyuşuyor';
} else {
     echo 'değerler uyuşmuyor';
}

Yukarıda yazılı  if bloğu TRUE değer döndürecek ve değerler uyuşuyor ibaresi yazacak. Fakat bu fonksiyon büyük/küçük uyumunu da dikkate aldığından eğer ki değerlerden birinde herhangi bir harf büyük olduğunda fonksiyon bize 0 değerini döndürmeyecek haliyle “değerler uyuşmuyor” ibaresi yazdırılacaktır.

strcasecmp Function

Bir önceki örneklerde büyük küçük uyumu söz konusu olduğundan büyük/küçük harf farklılığı olan değerleri karşılaştıramıyorduk, şimdi ki örneğimizde karşılaştırma yaparken büyük küçük uyumunu  dikkate almayacağız.

// Her iki değerde birbirine eşittir.

if(strcasecmp('deger1', 'deger1') == 0)
{
     echo 'Değerler uyuşuyor';
} else {
     echo 'Değerler uyuşmuyor.';
}
// İkinci değerin baş harfi büyük olmasına rağmen değerler bu kez de uyuşacak

if(strcasecmp('deger1', 'Deger1') == 0)
{
     echo 'Değerler uyuşuyor.';
} else {
     echo 'Değerler uyuşmuyor.';
}
// Bu örnekte de değerler birbiriyle uyuşacaktır, dikkat ederseniz ikinci değerin tüm harfleri büyük.

if(strcasecmp('deger1', 'DEGER1') == 0)
{
     echo 'Değerler uyuşuyor.';
} else {
     echo 'Değerler uyuşmuyor.';
}

Kodları incelediğinizde gördüğünüz üzere PHP de Strcmp fonksiyonu ile büyük/küçük uyumunu dikkate alarak karşılaştırma yapabilir ve eğer ki kullanıcıdan gelen değerlerin karşılaştırmalarını yapmak gibi bir niyetiniz var ve büyük/küçük uyumunu göz ardı etmek isterseniz de Strcasecmp fonksiyonu işinizi görecektir.

Yazar hakkında

Murat Dinç

Bozuktus.com, sistemgereksinimleri.net, klavyer.com sitelerinin kurucusu, muratdinc.com'da kişisel blog yazarı, codex.dincmedya.com.tr coder, seo.muratdinc.com'da SEO uzmanı.

Yorum ekle