substr

(PHP 4, PHP 5, PHP 7, PHP 8)

substrDizgenin bir kısmını döndürür

Açıklama

substr(string $dizge, int $başlangıç, ?int $uzunluk = null): string

dizge'nin başlangıç'tan itibaren uzunluk uzunluğunda parçasını döndürür.

Bağımsız Değişkenler

dizge

Girilen dizge.

başlangıç

Eğer başlangıç bağımsız değişkeni negatif değilse geri dönen dizge değeri, dizge'nin 0'dan itibaren başlangıç'ıncı konumundan başlar. Mesela, 'abcdef' dizgesinde, 0'ıncı konumdaki karakter 'a', 2'inci konumdaki karakter 'c'dir.

Eğer başlangıç bağımsız değişkeni negatif ise, dönen dizge değeri dizge'nin sonundan başlangıç karakter önce başlar.

Eğer dizge uzunluğu başlangıç dizgesinin uzunluğundan küçükse işlev boş dizge döndürür.

Örnek 1 - Negatif başlangıç kullanımı

<?php
$rest
= substr("abcdef", -1); // "f" döndürür
$rest = substr("abcdef", -2); // "ef" döndürür
$rest = substr("abcdef", -3, 1); // "d" döndürür
?>

uzunluk

Eğer uzunluk bağımsız değişkeni verildiyse ve pozitifse dönen dizge, dizge'nin uzunluğuna göre başlangıç'tan itibaren uzunluk'ta belirtilen karakter sayısı kadar karakter içerir.

Eğer uzunluk bağımsız değişkeni verildiyse ve negatifse dizge'nin sonundan belirtilen kadar karakter çıkartılır (başlangıç negatif ise önce başlagıç konumu hesaplanır). Eğer başlangıç bağımsız değişkeni negatif uzunlukla çıkarılan parçanın içindeki bir yeri işaret ediyorsa boş dizge döner.

uzunluk belirtilmiş ve 0 ise boş bir dizge döner.

uzunluk atlanırsa veya null ise, başlangıç'tan başlayarak dizenin sonuna kadar olan alt dizge döndürülür.

Örnek 2 - Negatif uzunluk kullanımı

<?php
$rest
= substr("abcdef", 0, -1); // "abcde" döndürür
$rest = substr("abcdef", 2, -1); // "cde" döndürür
$rest = substr("abcdef", 4, -4); // "" döndürür; PHP 8.0.0 öncesinde false dönerdi
$rest = substr("abcdef", -3, -1); // "de" döndürür
?>

Dönen Değerler

dizge'nin çıkarılan kısmı ya da boş dizge döner.

Sürüm Bilgisi

Sürüm: Açıklama
8.0.0 uzunluk artık null olabiliyor. uzunluk bağımsız değişkenine açıkça null atanmışsa dizgenin sonunda biten bir alt dizge döner, evvelce bu durumda boş dizge dönerdi.
8.0.0 İşlev evvelce false döndürdüğü durumda şimdi boş bir dizge döndürüyor.

Örnekler

Örnek 3 - Basit substr() kullanımı

<?php
echo substr('abcdef', 1); // bcdef
echo substr("abcdef", 1, null); // bcdef; PHP 8.0.0 öncesinde, boş dizge dönerdi
echo substr('abcdef', 1, 3); // bcd
echo substr('abcdef', 0, 4); // abcd
echo substr('abcdef', 0, 8); // abcdef
echo substr('abcdef', -1, 1); // f

// Dizge içerisindeki tek bir karaktere ulaşmak için
// "köşeli ayraçlar" da kullanılabilir.
$dizge = 'abcdef';
echo
$dizge[0]; // a
echo $dizge[3]; // d
echo $dizge[strlen($dizge)-1]; // f

?>

Örnek 4 - substr() tür dönüşüm davranışı

<?php
class apple {
public function
__toString() {
return
"green";
}
}

echo
"1) ".var_export(substr("pear", 0, 2), true).PHP_EOL;
echo
"2) ".var_export(substr(54321, 0, 2), true).PHP_EOL;
echo
"3) ".var_export(substr(new apple(), 0, 2), true).PHP_EOL;
echo
"4) ".var_export(substr(true, 0, 1), true).PHP_EOL;
echo
"5) ".var_export(substr(false, 0, 1), true).PHP_EOL;
echo
"6) ".var_export(substr("", 0, 1), true).PHP_EOL;
echo
"7) ".var_export(substr(1.2e3, 0, 4), true).PHP_EOL;
?>

Yukarıdaki örneğin çıktısı:

1) 'pe'
2) '54'
3) 'gr'
4) '1'
5) ''
6) ''
7) '1200'

Örnek 5 - Geçersiz karakter aralığı

Geçersiz bir karakter aralığı istenmişse, substr() PHP 8.0.0 ve sonrasına boş dizge döndürüyor, evvelce false döndürürdü.

<?php
var_dump
(substr('a', 2));
?>

Yukarıdaki örneğin PHP 8 çıktısı:

string(0) ""

Yukarıdaki örneğin PHP 7 çıktısı:

bool(false)

Ayrıca Bakınız