Arama butonu
Bu konudaki kullanıcılar: 1 misafir
2
Cevap
252
Tıklama
0
Öne Çıkarma
subsrt ve mb_substr problemi
B
9 yıl (707 mesaj)
Yüzbaşı
Konu Sahibi

merhabalar aşağıdaki algoritma ile yazılarımı kırpıp sonuan ... koyuyorum sıkıntım şu substr kullanırsam türkçe karekter sorunu yaratıyor kullanmam mb_substr kullanırsam da istediğim gibi çalışmıyor.
Örnek (substr ile):
Hepimizin farklı bakış açıları var. Birimizi yıkan şey bir diğerimize dokunmuyor bile. Sizlerin canını yakacak şeyler nelerdir?Hepimizin farklı bak�...

Örnek(mb_substr ile):
Hepimizin farklı bakış açıları var. Birimizi yıkan şey bir diğerimize dokunmuyor bile. Si...

mb_substr yazmasını istediim kadar karakter sayısı yazmıyor baya bi az yazıyor

Php Kodları:

<?php
while ($veri_cek_kategori_dizi = mysql_fetch_array($veri_cek_kategori)){
$yazi_yazi_icerik = $veri_cek_kategori_dizi["yazi_yazi"];
$yazi_yazi_icerik_karakter = strlen($yazi_yazi_icerik);
$yazi_yazi_icerik_karakter_geri_git = $yazi_yazi_icerik_karakter-164;
$yazi_yazi_icerik_karakter_parca_al = mb_substr($yazi_yazi_icerik,-$yazi_yazi_icerik_karakter_geri_git,$yazi_yazi_icerik_karakter_geri_git);
$yazi_yazi_icerik_karakter_degistir = str_replace($yazi_yazi_icerik_karakter_parca_al,"...","$yazi_yazi_icerik");
}
?>

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



S
9 yıl (26 mesaj)
Onbaşı

<?php echo substr(veri_cek_kategori_dizi["yazi_yazi"],0,300)."..."; ?>



G
9 yıl (2283 mesaj)
Yarbay

Türkçe karakterler latin alfabesinde yer almayan karakterler içerdiği için str* fonksiyonları doğru çalışmayabilir. Bu sorunun üstesinden gelmek için multibyte fonksiyonları geliştirilmiştir.

Sizin yukarıda yazdığınız kodun işlevini yerine getirip getirmediğiyle ilgilenmeden şu bilgiyi vereyim: strlen fonksiyonu multibyte karakterler ile çalışması uygun olmayan bir fonksiyon. strlen yerine mb_strlen kullanın.

MB fonksiyonlarının doğru çalışması için bu fonksiyonları kullanmadan önce mb_internal_encoding fonksiyonu ile içsel kodlamayı belirtmeniz gerekir. Eğer verileri veritabanında UTF-8 karakter kodlamasıyla saklanıyorsa ve veritabanından alınan veriler UTF-8 karakterleri olarak gösteriliyorsa şunu çalıştırmalısınız:
mb_internal_encoding('UTF-8');


Yukarıda kodda ne yapmaya çalıştığınız belli değil. Ama açıklamanızdan anladığım kadarıyla bir metnin ilk x karaterini alıp sonunda "..." eklemek istiyorsunuz.
Ben size ufak bir kod yazayım.

 
mb_internal_encoding('UTF-8');
function kisalt($yazi, $karakter_sayisi = 164, $sona_ekle = '...')
{
if (mb_strlen($yazi) > $karakter_sayisi + mb_strlen($sona_ekle)) {
$yazi = mb_substr($yazi, 0, $karakter_sayisi) . $sona_ekle;
}
return $yazi;
}

while ($veri_cek_kategori_dizi = mysql_fetch_array($veri_cek_kategori)) {
$yazi_yazi_icerik = kisalt($veri_cek_kategori_dizi["yazi_yazi"]);
}



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.