Bi'şey mi bakmıştın? (blog içi arama)

18 Ekim 2014 Cumartesi

PHP substr_replace türkçe karakter sorunu çözümü

Merhabalar,

Php ile türkçe yazılan bir yazıyı kısaltmak için substr_repace() fonksiyonunu kullanmak bazen can sıkabiliyor. Kestiği notkada türkçe karakter olması durumunda (türkçe karakteri çift karakter gibi alarak) ortadan bölüyor ve saçma sapan bir hata ile karşılaşıyorsunuz.
Çözümü çok basit aslında, mb_substr() kullanmak! (Çözüm için yazının sonuna gidin)

Örnek ile açıklayalım hemen:

Sitenize eklemek için haber modülü yaptığınızı farz edelim. Tablo adımız haberler olsun. Alanlar şu şekilde:
haber_id
haber_adi
haber_icerik

Haber içeriğimiz 500 karakterde kesilsin istiyoruz. Sayfaya çağırıyoruz;

### ÖRNEK BAŞLANGIÇ ###
<?
$query = mysql_query("SELECT * FROM haberler");
while($row = mysql_fetch_assoc($query))
{
$i++;
?>
<div name="haber_<? echo $i; ?>" class="haberler">
<img src="http://www.alanadi.com/haber_resimleri/sg1234sda.jpg" style="max-width:150px;float:left" />
<? echo substr_replace($row['haber_icerik'], ''...', 500); ?>
<br>
<a href="http://www.alanadi.com/haberler/<? echo $row['haber_id']; ?>">Devamı için tıklayınız... </a>
</div>
<?
}
?>
### ÖRNEK BİTİŞ ###

Yukarıdaki örnekte, haber içeriği türkçe bir karakter ile bitiyorsa şu görüntü oluşabiliyor:
...tarihinde ankara kız�...
 Halbuki orada yazması gereken:
 ...tarihinde ankara kızı...

ÇÖZÜM:
<? echo substr_replace($row['haber_icerik'], ''...', 500); ?>
YERİNE
<? echo mb_substr($row['haber_icerik'], 0,500, 'UTF-8'); ?>
 Kullanın :)

Hepinize mutlu yarınlar...

Hiç yorum yok:

Özel Arama