PHP String Functions

PHP’de Başlangıç Alt Dizelerinin Etkin Bir Şekilde Kontrol Edilmesi

Spread the love

PHP, bir dizenin belirli bir alt dizeyle başlayıp başlamadığını belirlemek için birkaç verimli yöntem sunar. Bu makalede, substr(), strpos() ve strncmp() fonksiyonlarını kullanarak üç yaygın yaklaşımı inceleyeceğiz. Her yöntemin kendine özgü güçlü ve zayıf yönleri vardır ve bu da onları farklı senaryolar için uygun hale getirir.

İçindekiler

Başlangıç Alt Dizisini Kontrol Etmek için substr() Kullanımı

substr() fonksiyonu, bir dizenin bir bölümünü ayıklar. Bir dizenin başlangıcının hedef alt dizimizle eşleşip eşleşmediğini kontrol etmek için bunu kullanabiliriz. Bu yaklaşım basit ve anlaşılması kolaydır.


<?php

function startsWithSubstr(string $haystack, string $needle): bool {
  return substr($haystack, 0, strlen($needle)) === $needle;
}

$string = "Bu bir test dizisidir.";
$substring = "Bu";

if (startsWithSubstr($string, $substring)) {
  echo "'$string', '$substring' ile başlıyorn";
} else {
  echo "'$string', '$substring' ile başlamıyorn";
}

$string2 = "Başka bir test dizisi.";
$substring2 = "Başka";

if (startsWithSubstr($string2, $substring2)) {
  echo "'$string2', '$substring2' ile başlıyorn";
} else {
  echo "'$string2', '$substring2' ile başlamıyorn";
}

?>

Bu kod, 0. indeksten başlayarak $needle uzunluğunda $haystack‘in bir bölümünü ayıklar. Daha sonra hem türün hem de değerin eşleştiğinden emin olmak için sıkı bir karşılaştırma (===) yapar. Bu yöntem, daha kısa alt dizeler için verimlidir.

Başlangıç Alt Dizisini Kontrol Etmek için strpos() Kullanımı

strpos() fonksiyonu, bir alt dizenin ilk oluşumunun konumunu bulur. Alt dize başlangıçta ise, konumu 0 olacaktır.


<?php

function startsWithPos(string $haystack, string $needle): bool {
  //strpos, needle bulunmazsa false döndürür, bu yüzden != yerine !== kullanıyoruz
  return strpos($haystack, $needle) === 0;
}

$string = "Bu bir test dizisidir.";
$substring = "Bu";

if (startsWithPos($string, $substring)) {
  echo "'$string', '$substring' ile başlıyorn";
} else {
  echo "'$string', '$substring' ile başlamıyorn";
}

$string2 = "Başka bir test dizisi.";
$substring2 = "Başka";

if (startsWithPos($string2, $substring2)) {
  echo "'$string2', '$substring2' ile başlıyorn";
} else {
  echo "'$string2', '$substring2' ile başlamıyorn";
}

?>

Bu özlü ve sık kullanılan bir yöntemdir. strpos(), iğne bulunmazsa false döndürdüğü için sıkı bir karşılaştırma (=== 0) çok önemlidir.

Başlangıç Alt Dizisini Kontrol Etmek için strncmp() Kullanımı

strncmp() fonksiyonu, iki dizenin bölümlerini karşılaştırır. Büyük/küçük harfe duyarlı karşılaştırmalar için veya yalnızca belirli sayıda karakteri kontrol ederken özellikle kullanışlıdır.


<?php

function startsWithStrncmp(string $haystack, string $needle): bool {
  return strncmp($haystack, $needle, strlen($needle)) === 0;
}

$string = "Bu bir test dizisidir.";
$substring = "Bu";

if (startsWithStrncmp($string, $substring)) {
  echo "'$string', '$substring' ile başlıyorn";
} else {
  echo "'$string', '$substring' ile başlamıyorn";
}

$string2 = "Başka bir test dizisi.";
$substring2 = "Başka";

if (startsWithStrncmp($string2, $substring2)) {
  echo "'$string2', '$substring2' ile başlıyorn";
} else {
  echo "'$string2', '$substring2' ile başlamıyorn";
}

?>

strncmp(), $haystack‘in ilk strlen($needle) karakterini $needle ile karşılaştırır. 0 değerini döndürmek, bunların özdeş olduğu anlamına gelir. Bu fonksiyon verimlidir ve daha fazla kontrol sağlar.

Doğru Yöntemi Seçme

Basitlik ve okunabilirlik için daha kısa alt dizelerde substr() iyi bir seçimdir. strpos() çoğu durumda özlü ve verimli bir çözüm sunar. strncmp() özellikle büyük/küçük harfe duyarlı karşılaştırmalar için veya karşılaştırmayı belirli sayıda karakterle sınırlandırırken daha fazla esneklik sunar. Çok büyük dizeler için hafif bir performans avantajı sağlayabilir, ancak çoğu yaygın kullanım durumu için strpos() genellikle yeterlidir.

Bir yanıt yazın

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