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

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("<br>",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

Lütfen konu haricinde soru sormayın cevaplanmayacaktır. Yorumunuz onaylandıktan sonra yayınlanacaktır. Lütfen Yukarıda ki mesajları okuyun tekrar aynı soruları sormayın.

2550

KATEGORİ
  • HTML
  • CSS
  • PHP
  • JQUERY
  • PHOTOSHOP
  • JavaScript
  • Web Dünyası
  • Linux
  • MİTHRİL FRAMEWORK
  • Laravel
  • Git
  • React
POPÜLER MAKALE
  • HTML LİNK(Bağlantı)EKLEME - LİNK VERME
  • HTML YAZI VE RESİM ORTALAMA
  • HTML RESME LİNK VERME
  • HTML FORM OLUŞTURMA
  • CSS YATAY MENÜ YAPIMI
  • HTML RESİM EKLEME
  • CSS (BOYUT) GENİŞLİK VE YÜKSEKLİK (Width-Height)
  • HTML DİV ve SPAN NEDİR?
  • HTML ARKAPLANA MÜZİK EKLEME
  • KALİTE KAYBETMEDEN RESİMLERİ BÜYÜTME
ETİKET
WEBCEBİR © 2013 Tüm hakları saklıdır.