PHP ile string işlemleri ve Türkçe karakter problemi
PHP ile string kısaltma, kesme, değiştirme gibi işlemler yaparken çoğu zaman Türkçe karakter sorunları yaşıyoruz. Bu yazımda sık kullanılan string fonksiyonlarında Türkçe karakter sorunlarını nasıl aşabileceğimizi anlatacağım.
İlk olarak kısaltma fonksiyonuna bakalım. Substr :
Substr ile stringleri dilediğimiz karakterden kısaltabiliriz. Örnek kullanım :
<?php $string = 'Şehirlere bombalar yağardı her gece'; echo substr($string, 0, 23); ?>
Bu şekilde kullandığımız zaman sonuç şu şeklinde olacaktır.
Bu sorunu düzeltmek için substr yerine mb_substr fonksiyonunu kullanmalıyız.
mb_substr fonksiyonunu da bir örnekle görelim :
<?php $string = 'Şehirlere bombalar yağardı her gece'; echo mb_substr($string, 0, 23, 'UTF-8'); ?>
Çıktımız şu şekilde olacaktır :
Şimdi de karakter sayma fonksiyonuna bakalım. Strlen :
strlen fonksiyonu string içindeki karakter sayısını verir, örnek kullanım :
<?php $string = 'Şehirlere bombalar yağardı her gece'; echo strlen($string); ?>
echo mb_strlen($string,'UTF-8');Bu kodu çalıştırdığınızda php sunucunuz 35 karakterlik stringinizin 38 karakter olduğunu iddaa edecektir. Sebebi tabii ki de Türkçe karakterler. Türkçe karakterleri çift sayıyor nedense. Çözümü de yine mb_strlen fonksiyonudur. Örnek kullanımı :
<?php $string = 'Şehirlere bombalar yağardı her gece'; echo strlen($string); ?>
Bu şekilde çalıştırdığınızda 35 karakter diyecektir.
Şimdi harf büyütüp küçültme işlemlerine bakalım
İlk olarak ucfirst ve ucwords :
ucfirst fonksiyonu stringin ilk karakterini büyütür. Tabii eğer Türkçe harf değilse. Türkçe harf ise eğer mb_ucfirst diye bir fonksiyon aramayın. Yok öyle bir fonksiyon. mb_ucwords de yok.
Ama ucwords için aynı işlevi görecek bir fonksiyon mevcut. ucwords kelimelerin ilk harflerini büyütmeye yarıyor. Eğer Türkçe değilse harfler. Türkçe ise çalışmıyor. Ama mb_convert_case fonksiyonunu MB_CASE_TITLE kipinde kullanarak ucwords işlevi görebiliriz. Örnek kullanım :
<?php $string = "şehirlere bombalar yağardı her gece"; echo mb_convert_case($string, MB_CASE_TITLE, 'UTF-8'); ?>
Gördüğünüz gibi her kelimenin ilk harfi büyüdü.
Şimdi de strtolower ve strtoupper :
$string = "şehirlere bombalar yağardı her gece";Bu iki fonksiyon tüm dizideki harfleri büyütür veya küçültür. Ancak karşılarına Türkçe karakter çıktığında bunlar da yetersiz kalır. Ama bunların yerine mb_strtolower ve mb_strtoupper kullanabilirsiniz. Örnek kullanım :
<?php $string = "şehirlere bombalar yağardı her gece"; echo $buyuk = mb_strtoupper($string, 'UTF-8')."
"; echo $kucuk = mb_strtolower($buyuk, 'UTF-8'); ?>
Çıktımız şu şekilde olacaktır :
ŞEHIRLERE BOMBALAR YAĞARDI HER GECE
şehirlere bombalar yağardi her gece
Ara ara bu blogda bildiğim bağzı şeyleri paylaşacağım...