PHP mb_substr() Kullanımı
Merhaba, bu yazımda php de mb_substr() kullanımı hakkında örnekler yapacak, anlatmaya çalışacağım. Bir önceki yazımda php de substr() kullanımı hakkında bilgiler vermiştim. Şimdi kullanacağımız fonksiyon da hemen hemen aynı işi yapmakta, ufak tefek farklılıklar var tabi.
mb_substr() fonksiyonu, parametre olarak belirttiğimiz değişken içerisindeki veriyi, parametrede belirtilen değere göre alıp yeni bir değişkene depolar. Türkçe karakterlerde işlem yapılacağı zaman son parametre olarak ‘UTF-8’ belirtilmesi zorunludur.
Yani yaptığı iş aslında çok baytlı substr() işlemidir. substr() kullanımı sırasında yaşadığımız Türkçe karakter sıkıntılarını mb_substr() fonksiyonunda yaşamamaktayız. Bunun için ayrıca bir sorun çözümü yazısı hazırlayarak anlatacağım.
Örnek;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php // mb_substr() parametre olarak belirttiğimiz değişken içerisindeki veriyi, // parametrede belirtilen değere göre alıp yeni bir değişkene depolar. $icerik = "ali veli kırklareli emret komutanım."; echo "İçerik : <br>" . $icerik . "<br><br>"; // ilk karakterden 11. karaktere kadar alalım // Dikkat: 11. karakter Türkçe karakterdir. $yeni_icerik = mb_substr($icerik, 0, 11, 'UTF-8'); echo "Yeni İçerik : <br>" . $yeni_icerik . "<br><br>"; ?> |
Çıktısı;
1 2 3 4 5 |
İçerik : ali veli kırklareli emret komutanım. Yeni İçerik : ali veli kı |
şeklinde olacaktır. Dikkat ederseniz bölme işlemi yaptığım harf Türkçe karakter. Bunu substr() ile ya da mb_substr() fonksiyonunun son parametresine ‘UTF-8’ eklemeden kullanmaya çalışırsanız karşınıza çıktı olarak � şeklinde bir karakter çıkacaktır. Bunun sebebi php de bazı fonksiyonlarda olduğu gibi substr() fonksiyonunun da her bir karakteri 1 bayt olarak kabul etmesidir. Ama UTF-8 karakterler 1 ile 4 bayt arasında olduğu için bu şekilde hata almaktayız. Eğer mb_substr fonksiyonunda da UTF-8 belirtilmezse bu fonksiyon da karakterleri 1 bayt olarak alacak ve aynı hatayı verecektir.
Bu konu hakkında daha detaylı bir çözüm yazısı hazırlayacağımı yukarıda da belirttim. mb_substr kullanımı şimdilik bu kadar. Bir sonraki yazıda görüşmek üzere.