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("<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:
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:
- HTML
- CSS
- PHP
- JQUERY
- PHOTOSHOP
- JavaScript
- Web Dünyası
- Linux
- MİTHRİL FRAMEWORK
- Laravel
- Git
- React
- 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