Neden metinsel ifadeden parça alırken mb_substr kullanmalıyız?
Bu makalede metinsel ifadeden parça alırken substr() fonksiyonu yerine neden mb_substr() fonksiyonunu kullanmamız gerektiğini göreceğiz.
substr() fonksiyonu
substr() fonksiyonu metinsel(string) bir ifadenin solundan, sağından, ya da "şu karakter başlayıp, şu kadar al" metin parçası almaya yarayan bir fonksiyondur. Aşağıdaki örnekleri incelediğinizde daha iyi anlayacaksınız.
Yukarıdaki kullanımda ilk karakterden başlayarak 4 karakter alınmasını söyledik. Unutmamız gereken nokta, saymaya 0'dan başlamamız gerektiğidir.
Neden substr() yerine mb_substr() kullanmalıyız?
Metinsel ifadeyi bir değişkene kendimiz atayıp, substr() fonksiyonu kullanınca bir sorunla karşılaşmamaktayız, her şey yolunda. Fakat mysql gibi bir veritabanına utf-8 karakter kodlamasıyla atadığımız bir string ifadeyi veritabanından çekip ekrana yazmak istersek ekranda saçma sapan karakterler görebiliriz.
Bunun nedeni; substr() fonksiyonunun Türkçe karakterlerin de düzgün yazılmasına yarayan uluslararası UTF-8 kodlamasını desteklememesinden kaynaklanır. Aşağıdaki gibi substr() yerine mb_substr() fonksiyonunu kullanırsanız sorun çıkmamaktadır.
mb_substr($metin,0,$sayi,'UTF-8')
mb_substr() fonksiyonunun kullanımı, substr() fonksiyonu ile hemen hemen aynıdır, sadece son parametre olarak "UTF-8" kod karakterine göre metinsel parça alması gerektiğini söylüyoruz.
Daha sonra mb_substr() fonksiyonu kullanarak aynı işlemi yaptım ve sonuç tam istediğim gibi oldu.
KAYNAKLAR
1) PHP.net Kütüphanesi, substr() kullanımı
http://php.net/manual/tr/function.substr.php
2) PHP.net Kütüphanesi, mb_substr() kullanımı
http://php.net/manual/tr/function.mb-substr.php
substr() fonksiyonu
substr() fonksiyonu metinsel(string) bir ifadenin solundan, sağından, ya da "şu karakter başlayıp, şu kadar al" metin parçası almaya yarayan bir fonksiyondur. Aşağıdaki örnekleri incelediğinizde daha iyi anlayacaksınız.
<?php
$metin ="gaziantep";
$m1 = substr($metin, 0, 4);
echo $m1; //gazi sonucunu döndürür
echo "<br>";
Yukarıdaki kullanımda ilk karakterden başlayarak 4 karakter alınmasını söyledik. Unutmamız gereken nokta, saymaya 0'dan başlamamız gerektiğidir.
$m2 = substr($metin, -5);
echo $m2; //antep sonucunu döndürür
echo "<br>";
Yukarıdaki kullanımda ise substr() fonksiyonunun sağdan 5 karakter almasını söyledik, eksi bir değer verince fonksiyon sağdan başlayıp alır.
Yukarıdaki kullanımda ise substr() fonksiyonunun sağdan 5 karakter almasını söyledik, eksi bir değer verince fonksiyon sağdan başlayıp alır.
$m3= substr($metin, 4);
echo $m3; //antep sonucunu döndürür
echo "<br>";
Yukarıdaki kullanımda ise substr() fonksiyonunun soldan 4 karakter almasını söyledik, artı bir değer verince fonksiyon soldan başlayıp alır.
Yukarıdaki kullanımda ise substr() fonksiyonunun soldan 4 karakter almasını söyledik, artı bir değer verince fonksiyon soldan başlayıp alır.
$m4= substr($metin, 4,2);
echo $m4; //an sonucunu döndürür.
echo "<br>";
Yukarıdaki kullanımda ise 5. karakterden başlayıp, 2 karakter almasını söyledik, saymaya 0'dan başlandığı için substr() fonksiyonunda 5 yerine 4 yazıyoruz.
Yukarıdaki kullanımda ise 5. karakterden başlayıp, 2 karakter almasını söyledik, saymaya 0'dan başlandığı için substr() fonksiyonunda 5 yerine 4 yazıyoruz.
?>
Neden substr() yerine mb_substr() kullanmalıyız?
Metinsel ifadeyi bir değişkene kendimiz atayıp, substr() fonksiyonu kullanınca bir sorunla karşılaşmamaktayız, her şey yolunda. Fakat mysql gibi bir veritabanına utf-8 karakter kodlamasıyla atadığımız bir string ifadeyi veritabanından çekip ekrana yazmak istersek ekranda saçma sapan karakterler görebiliriz.
Bunun nedeni; substr() fonksiyonunun Türkçe karakterlerin de düzgün yazılmasına yarayan uluslararası UTF-8 kodlamasını desteklememesinden kaynaklanır. Aşağıdaki gibi substr() yerine mb_substr() fonksiyonunu kullanırsanız sorun çıkmamaktadır.
mb_substr($metin,0,$sayi,'UTF-8')
mb_substr() fonksiyonunun kullanımı, substr() fonksiyonu ile hemen hemen aynıdır, sadece son parametre olarak "UTF-8" kod karakterine göre metinsel parça alması gerektiğini söylüyoruz.
Örneğin blog'da sağ tarafta en çok okunan 25 makaleyi sıralamak istedim, fakat bazı makalelerin başlıkları uzun olduğundan substr() fonksiyonu ile kısaltmak gerekti. fakat sonuç aşağıdaki gibi oldu.
Daha sonra mb_substr() fonksiyonu kullanarak aynı işlemi yaptım ve sonuç tam istediğim gibi oldu.
Ara ara bu önemli püf noktalarını da vermeye çalışacağım, unutmayın PHP web programlama dilinde sizin karşılaştığınız sorunla mutlaka daha önce karşılaşan olmuştur, bir sorunla karşılaştığınız "Bu nasıl dil?" deyip, hemen vazgeçmeyin, araştırın çözümü bulacaksınız.
Mutlu Kodlamalar,
Temmuz, 2015
Mutlu Kodlamalar,
Temmuz, 2015
KAYNAKLAR
1) PHP.net Kütüphanesi, substr() kullanımı
http://php.net/manual/tr/function.substr.php
2) PHP.net Kütüphanesi, mb_substr() kullanımı
http://php.net/manual/tr/function.mb-substr.php
Dil Değiştir(Change Language)
Kategoriler
- Csharp(58)
- Csharp Formlar(23)
- Web Tasarım(9)
- CSS(27)
- JavaScript(37)
- PHP(50)
- Laravel(3)
- ASP.net(38)
- Excel(15)
- Güvenlik(4)
- E-Ticaret(3)
- Kariyer(5)
- SQL Server(29)
- MySQL(16)
- Linux(17)
- MacOSX(8)
- Ayarlar(12)
- Bilgisayar Ağları(3)
- Symfony(1)
- Teknoloji(7)
- VBS(1)
- Arduino(6)
- RaspberryPi(1)
- Algoritmalar(15)
- HTML(3)
- Python(2)
- Bash Script(7)
- C Programlama(10)
- Flutter - Dart(11)
- Bootstrap(1)
En çok Okunan 18 Makale
- :: Excelde EĞER Fonksiyonu Kullanımı...
- :: Csharp ile Access Veritabanı Bağlan...
- :: SQL nedir, Temel SQL Komutları nele...
- :: Hangi Linux Dağıtımı?
- :: OSX İşletim Sistemine PHP, MySQL, A...
- :: Excel Hesap tablosunda EĞERSAY Fonk...
- :: PHP dilini kullanarak MySQLi tekniğ...
- :: Excel Hesap tablosunda ÇOKETOPLA Fo...
- :: Excel Hesap tablosunda ETOPLA Fonks...
- :: Excel Hesap tablosunda ÇOKEĞERSAY F...
- :: Hangi Programlama Dilini Öğrenmeliy...
- :: Mac Bilgisayarınıza Windows 7 Yükle...
- :: PHP ile Basit Dosya Yükleme
- :: C# Programlama Dili ile İlgili Örne...
- :: Excel hücrelerinde yıldız koyarak b...
- :: PHP Dili kullanarak MySQLi Tekniği ...
- :: PhpMyAdmin Şifresi Nasıl Değiştiril...
- :: Hangisi acaba, PHP mi ASP.NET mi ?