PHP substr_replace() FONKSİYONU KULLANIMI

Kimi zaman belirli bir metnin içerisine belirli karakterler veya belirli kelimeler eklemek isteyebiliriz. substr_replace() fonksiyonu metnin tamamını veya bir kısmını değiştirmek için kullanılır.

Sözdizimi:

substr_replace(metin, yenisi, başlangıc_karakteri, uzunluk)

Paremetreler:

metin :Gereklidir. İşlem yapılacak, Bir metin veya dizi belirtilebilir.

yenisi :Gereklidir. Değiştirilecek kısma yerleştirilecek dizge.

başlangıç_karakteri :Gereklidir. Eğer başlangıç pozitifse, yer değiştirme işlemi metnin baştan başlangıç karakterinden başlar.

Eğer başlangıç negatifse, yer değiştirme işlemi metnin son başlangıç karakterinden başlar.

uzunluk :İsteğe bağlı. Başlangıç karakterinden itibaren kaç karakter alınacağı gösterir..

  • Pozitif sayı verilirse, metnin baştan başlangıç karekterinden itibaren kelime siler geri kalan metni ekler.
  • negatif sayı verilirse, metnin son başlangıç karakterinden itibaren belirtilen sayı kadar yeni metne ekler.
  • sıfır (0) sayısı verilirse yeni metne tüm eski metni ekler.

Dönen Değerler:

Elde edilen metin döner. Metin bir dizi ise bir dizi döner.

NOT: Bu fonksiyon dosyalarla çalışırken dosya içeriğini değiştirmez.

Örnek 1 :

Verilen metni tamamen silelim yerine yeni kelime veya cümle yazalım.


echo substr_replace("Merhaba php dünyası","JavaScript",0); 

ÇIKTI:

JavaScript

Örnek 2 :

Metinde ki ("Dünya" yerine "Türkiye" ile) 8. konumundan itibaren metni değiştirilem


echo substr_replace("Merhaba Dünya","Türkiye",8);
  

ÇIKTI:

Merhaba Türkiye

Örnek 3 :

Metinde ki ("Dünya" yerine "Türkiye" ile) -6. metnin sonundan itibaren metni değiştirilem


 echo substr_replace("Merhaba dünya","Türkiye",-6);  
 

ÇIKTI:

Merhaba Türkiye

Örnek 4 :

"Dünya" kelimesini önüne "Merhaba" kelimesini getirelim.


echo substr_replace("Dünya","Merhaba ",0,0);
 

ÇIKTI:

Merhaba Dünya

Örnek 5 :

Aynı anda birden fazla Metin değiştirin Kış meyve metinlerini yaz meyve adları ile değiştirin.


$Kıs = array("1: Portakal","2: Mandalin","3: Muz"); 
  
$Yaz  = array("Elma","Erik","Kiraz");
  
echo implode("
",substr_replace($Kıs,$Yaz,3,8));

ÇIKTI:

1: Elma

2: Erik

3: Kiraz


mb_substr_replace() KULLANIMI


mb_substr_replace() fonksiyonu aynı şeyi yapar ama aynı zamanda karakter sınırlarını saygı duyar. Tüm karakterler tek bir bayt ile ifade edilebileceği pek çok dil vardır. Multi-byte karakter kodları. Birçok dilde birçok karakter ifade etmek için kullanılır mbstring Japonca ve çince karakterleri işlemek için geliştirilmiştir. Ancak, birçok mbstring fonksiyonları Japonca ve çincenin dışındaki karakter kodlamasında da kullanabiliyoruz.

PHP temelde ISO-8859-1 için tasarlanmış olduğundan, bazı multi-byte karakter kodlaması PHP ile iyi çalışmaz.

mbstring(multi-byte stringleri) fonksiyonları bazı charecter kodlarında hata alırsak multi-byte takılı (mb_substr...vb) fonksiyonları kullanabiliriz.

php dilinde hazır substr_replace fonksiyonun yerine çokbaytlı eşdeğeri bir fonksiyon ile gelmiyor, mb_substr_replace() fonksiyonu yoktur. Bunun yerine hazır github'da yayınlanmış, fonksiyonu vereceğim.


function mb_substr_replace($string, $replacement, $start, $length=NULL) {

 if (is_array($string)) {
 
    $num = count($string);
	
    // $replacement
	
    $replacement = is_array($replacement) ? array_slice($replacement, 0, $num) : array_pad(array($replacement), $num, $replacement);
	
    // $start
	
    if (is_array($start)) {
	
    $start = array_slice($start, 0, $num);
	
    foreach ($start as $key => $value)
	
    $start[$key] = is_int($value) ? $value : 0;
	
        }
		
        else {
		
            $start = array_pad(array($start), $num, $start);
        }
		
        // $length
		
        if (!isset($length)) {
		
            $length = array_fill(0, $num, 0);
        }
        elseif (is_array($length)) {
		
            $length = array_slice($length, 0, $num);
			
            foreach ($length as $key => $value)
			
                $length[$key] = isset($value) ? (is_int($value) ? $value : $num) : 0;
        }
        else {
		
            $length = array_pad(array($length), $num, $length);
        }
        // Recursive call
		
        return array_map(__FUNCTION__, $string, $replacement, $start, $length);
    }
    preg_match_all('/./us', (string)$string, $smatches);
	
    preg_match_all('/./us', (string)$replacement, $rmatches);
	
    if ($length === NULL) $length = mb_strlen($string);
	
    array_splice($smatches[0], $start, $length, $rmatches[0]);
	
    return join($smatches[0]);
}

Projelerinizde metinleri bir kısmını değiştirmek için substr_replace() fonksiyonu yerine mb_substr_replace kullanırsanız, Türkçe karakterlerde problem yaşamazsınız.

Bir örnekle bu konuyu açıklayalım.

Örnek:

echo substr_replace("Merhaba php dünyası ","İyi günler ",20); 

ÇIKTI:

php mb_substr_replace

Yukarıda ki örnek çıktısında görüldüğü üzere türkçe karekter yerinde sorun çıktı.

Aynı örneği verdiğimiz mb_substr_replace fonksiyonu ile çalıştıralım.

Örnek: Yukarıdaki verdiğimiz fonksiyonu eklemeye unutmayın.

$text=mb_substr_replace("Merhaba php dünyası ",

                         "İyi günler ",20); 

echo $text;  

ÇIKTI:

Merhaba php dünyası İyi günler

Adınız

Eposta

Mesaj

2859

Güvenlik No

REKLAM
KATEGORİ
POPÜLER MAKALE