PHP substr() Türkçe Karakter Sorunu Çözümü

Merhaba, bu yazımda size bir sorun çözümünden bahsedeceğim. Php programlama dilinde UTF-8 karakterler uzun bir süre başa bela olmuştu. Özellikle Türkçe karakter kullanırken bir çok fonksiyon işlevini tam anlamıyla yerine getiremiyor ve ��� şeklinde karakter hataları döndürüyordu. Neyse ki bu durumu toparlayacak bazı önlemler ve güncellemeler yapıldı.

Bu yazıda substr() Türkçe Karakter Sorunu ile ilgili bilgiler vererek örnek yapacağım ve alternatif olarak kullandığımız mb_substr() kullanımı hakkında tekrardan küçük bir örnek yapacağım.

Php de substr() kullanımı sırasında karşılaştığımız Türkçe karakter sorununun sebebi ilgili fonksiyonun her karakteri 1 bayt olarak işleme almasıdır. Ancak Türkçe karakterler de dahil UTF-8 karakter kodlamasına sahiptir ve bu karakterler 1 ile 4 bayt arasında değiştiğinden substr() gibi fonksiyonlarda Türkçe karakter hataları alırız.

Hata aldığımız bir örnek;

Çıktısı;

Orjinal Metin : Hata aldığımız bir örnek
Hatalı Metin : Hata ald�

şeklinde oldu. Metni 9. indis değerine sahip olan ‘ı’ Türkçe karakterinden böldük ve sonuç belli. Şimdi aynı örneği mb_substr() kullanarak yapalım;

Hata almadığımız mb_substr() örneği;

Çıktısı;

Orjinal Metin : Hata aldığımız bir örnek
Hatalı Metin : Hata aldı

şeklinde oldu. Gördüğünüz gibi Türkçe karakter sıkıntısı farklı bir fonksiyon kullanarak giderilmiş oldu.

Bu arada, dikkat edilmesi gereken çok önemli bir husus var. mb_substr() kullanırken Türkçe karakter ya da herhangi bir UTF-8 karakter kodlamasına sahip herhangi bir karakter kullanılacaksa, fonksiyonun son parametresinde ‘UTF-8’ kullanmak zorundasınız. Kullanmazsanız fonksiyon substr() gibi hata verecektir.

Php substr() Türkçe Karakter Sorunu Çözümü hakkında dilim döndüğünce bir şeyler anlatmaya çalıştım. Bu sorunun çok farklı çözüm yollarını da biliyorum fakat en mantıklı ve tavsiye edilebilir olan yolu bu. Bu yazılık bu kadar, bir sonraki yazıda görüşmek üzere.

“PHP substr() Türkçe Karakter Sorunu Çözümü” üzerine 3 yorum

genelpara için bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir