Başlığa ne ad vereceğime bir türlü karar veremedim. Mesela sitenizde haberler bölümü var ve anasayfada haberlerin ilk 500 karakterinin gözükmesini istiyorsunuz. Yazının sonunda devamı… yazsın. Devamına tıklandığında yazının tamamı görünsün. İşte metin sınırlama derken bunu kastediyorum :)
Bu kodla veritabanındaki yazı eğer 500 karakterden büyükse 500ncü karaktere kadar ekrana yazıp sonunda “devamı…” yazar.
[php] //Goruntulencek Metnin Tam Hali
$detay = $row_HaberListele[‘detay’];
//Var olan metin içindeki karakter sayısı
$uzunluk = strlen($detay);
//Kaç Karakter Göstermek İstiyorsunuz
$limit = 500;
//Uzun olan yer “devamı…” ile değişecek.
if ($uzunluk > $limit) {
$detay = substr($detay,0,$limit) . “devamı…”;
}
echo $detay;
[/php]
Kelime sayısına göre sınırlama
[php]devamı burada‘;
?>[/php]
Yakuter selamlar öncelikle. Bahsettiğin yöntem sık kullanılan bir yöntem. Ancak kimi zaman öyle bir noktada bölüyor ki koca metini, sinir küpü olmamak elde değil. Bu nedenle verdiğin yöntemi biraz değiştirerek şöyle bir mantık izlenebilir.
Metin içerisinde sürekli tekrarlanan bir karakter taban alınır. Örneğin: nokta ya da boşluk gibi. Daha sonra explode ile bir array değişkenine metin içerisinde ki yazılar yazılır. Array hesabı alındıktan sonra istenilen kelime ya da cümle kadar döngüye sokulur. Sonra ver devamı diye gitsin :)
Verdiğim mantıkta sorun çıkarabilecek olanlar boşluklar veya noktalardır. Ancak döngü içerisinde arraylar dökülürken, bu sorun giderilir. Hece hesabından iyidir diye düşünüyorum :)
Yanlış anlama paylaşımını baltalamak değil amacım, sadece gönlümden geçti paylaşmak istedim.
Kendine çok iyi bak :)
Estağfurullah Barış ne baltalaması. Tam tersine böyle makaleyi geliştirici yorumlar geldikçe daha da memnun oluyorum. Ne de olsa burada maksat bu konuyu öğrenmek isteyenlere bir şeyler verebilmek.
Çok teşekkür ederim değerli yorumun için ;)
brsyuksel’in dediğine katılıyorum ben de.. bu gibi durumlarda karakter değil de kelime sayısına göre kesmek daha mantıklı oluyor biraz.. kendi kullandığım yöntem şu şekildedir:
// önce yazıyı kelimelere bölelim..
$kelime = explode(” “,$yazi);
// kaç kelime oldu bakalım..
$say = count($kelime);
// sınır belirleyelim..
$sinir = 40;
// eğer metindeki kelime sayısı sınırımızdan az ya da eşit ise
// yarısını keselim..
if($say <= $sinir) { $kes = $say*50/100; }
// sınırdan çok ise, sınır belirlediğimiz kelime sayısı olsun..
else { $kes = $sinir; }
// yazıyı ekrana basalım..
for($i = 0; $i <= $kes; $i++)
{
echo $kelime[$i].’ ‘;
}
// devam yazısı..
echo ‘ devamı burada’;
echo ‘ devamı burada yazan yerde yazi.php?oku=$id şeklinde bir bağlantı verdim ama direkt bağlantı olarak çıktı :/ yorumlara kod eklememiştim bu şekilde daha önce, kusura bakmazsınız artık.. bağlantı vermeyi biliyorsunuzdur zaten :)
@lestonix, vermiş olduğun örnek için çok teşekkür ederim. Böylece konu tamamen pekişmiş oldu :)
Merhaba, tam da bu konuyla ilgili size bir şey sorabilir miyim? Benim blogumda kullandığım temanın özelliklerinde (bir tik atmayla) yazdığım yazıların belirlediğim kadar kelimesini ana sayfada gösteriyor, hatta yanına thumbnail de koyuyor. Sorum şu: Bu gösterdiği (diyelim 100 kelimelik) metinde bold, renkli yazı, link vs hiçbir özellik olmuyor, dümdüz yazı (bkz: geziyazilari.net). Hatta yazının sonuna (…) atıyor; ama ona bile link vermiyor (devam etmek için yazının başlığına tıklamak gerekiyor). Yazının sonuna …devamı yazıp link nasıl verebilirim? Bir de yazının içindeki bold, renkli yazı, link vs özellikleri aktifleştirebilir miyim? WP Editör içinde, temanın theme-options.php ve theme-functions.php diye kodları var; ama kod bilgim sıfır olduğundan ben doğru yeri bulamadım haliyle. Bu konuda yardımcı olabilir misiniz? Şimdiden çok teşekkür ederim.
Mükemmel anlatım için teşekkürler.
devamına nasıl link vereceğimizi anlatır mısınız?
arkadaşım aşağıdaki kodda nasıl uygulayabilirim bunu
<?php
$yorum_cek=mysql_query("select * from yorum order by id DESC limit 0,5");
while($yorum_dizi=mysql_fetch_array($yorum_cek))
{
?>
<div class="sonyorumickutu" style="line-height:2; max-height:85px;"> <?=$yorum_dizi['isim'] ?><?=$yorum_dizi['yorum']; $limit = 5 ?></div>
<?php
}
?>
Merhaba,
Tam boyle birsey ariyordum ama eksik kalmis gibi :)
100 karakter almaya calisiyorum ama son kelime yarim kaliyor. Biraz daha ugrasip yapmaya calisayim en iyisi, tesekkurler kod icin.