Php de Yazının Devamı Fonksiyonu Yapımı
Tarih: Kasım 4th, 2008 | Yazar: Ertuğrul Erkan | Kategori: Php | Etiketler: daha, daha fazla yapımı, dersleri, false, fonksiyon, metin içinde arama, metin pozisyonu, metinde arama, metini kesme, more etiketi, php, php dersleri, php fonksiyonları, pozisyon, replace, str, strpos, str_replace, substr, true, yazının devamı, yazının devamı fonksiyonu, yazının devamı yapımı, yazıyı kesme | 8 Yorum »Merhaba arkadaşlar. Bir okuyucumuzdan mail aldım, aynı bu sitedeki gibi işte yazının devamı olayı nasıl yapılıyor diye. Bu yazımda sizlere yazının devamı fonskiyonu nasıl yapılır onu anlatacağım. Aslına bakarsanız kodlarımız oldukça kısa. Sadece mantığını kurmak gerekiyor. Böylece kendi fonksiyonlarımızı yaratabiliriz.
Bu konuyu bulmadan önce kağıt üzerine metin düzenlenmesi ile ilgili tüm bildiklerimi yazdım. Daha sonra str fonksiyonları üzerinde yoğunlaştım. İlk olarak yapmak istediğimi yapmama rağmen bunu yazdığımız blog sisteminede uyarlamak zorunda kaldım
. Teorinin yanı sıra canlı örnek ile denemekte gerek
Arkadaşlar öncelikle kodlarımız bunlar;
{code type=php}<?php
$yazi = $_POST["yazi"];
$ara = “<—daha—>”;
$nerde = strpos($yazi, $ara);
if ($nerde !== false) {
$toplam = $nerde + 12;
$kes=substr($yazi,0,$toplam);
echo str_replace(“<—daha—>”, “Daha fazlası için tıklayın”, $kes);
}else{
echo $yazi;
}
?>{/code}
Şimdi ilk önce yazımızı alıyoruz. Daha sonra strpos fonksiyonu için veriler tanımlıyoruz. Strpos fonksiyonun da diyelim Acbdada asdasda asdasd metininde istediğimiz veri aranıyor ( Örn: asdasda ), ekranada hangi pozisyonda olduğunu basıyor. Pozisyon tabi ki x ve ye kordinatları şeklinde değil. Cümle içerisinde arama yaparken bulunması gereken veriyi karakter karakter arıyor. Mesela örneğimizde poziyonu 8 olarak verecektir. İşte aynı wordpress teki gibi more yerine <—daha—> yapıyoruz. Bu daha verisini $yazi değişkenin de arıyoruz.
$nerde değişkenine işlem sonucunda iki veri atanıyor. Birinci pozisyonun sayısal değeri ikincisi ise bulunursa true, bulunmazsa false. Biz de if sorgusunda false ye eşit değilse şartı koyarak ilk kabuktaki işleme geçiyoruz. Eğer $yazi değikeninde $ara bulunursa ilk kabuk, bulunmazsa ikinci kabuk işleme giriyor.
İlk kabukta bir toplam verisi tanımladık. Bunun nedeni ise pozisyona + 12 katmaktı. Eğer neden +12 ekliyoruz derseniz <—daha—> komutunuda yazımızın içinde göstermek için böyle birşey yapıyoruz. <—daha—> 12 karakter olduğu için fonksiyonun sonuna kadar kesilme yapılmıyor. Peki son soru olarak neden <—daha—> yı gösteriyoruz derseniz onun cevabıda daha fazlası için tıklayın yazısını ekrana basmak için derim
Toplam verisinden sonra substr yani $yzai değişkenindeki metinin 0 pozisyonundan $toplam a kadar olan kısmı kesmek için gerekli olan fonksiyon geliyor.
Tüm kesme, biçme işlemlerinden sonra str_replace yani belirli bir veriyi değişme fonksiyonu geliyor. Php kodlarını tersten giriyoruz bu sefer. $kes değişkeninde <—daha—> yı bul ve Daha fazlası için tıklayın olarak değiştir diyoruz böylece son işlemide gerçekleştiriyoruz.
Son olarak eğer $yazi değişkeninde <—daha—> yoksa kesilme işlemi yapılmadan ekrana basılacağı için herhangi bir fonksiyon girmiyoruz.
İşte more yani daha fonksiyonu bu mantıkla yapılıyor. Herhangi bir adapte sorunu olursa sorabilirsiniz.
Herkese iyi günler, iyi çalışmalar…
Benzer Yazılar;
- Session İle Yapabileceklerimiz...
- Php de Kendi Şifreleme Yöntemimizi Yapalım...
- Php - Get Methodu ile Include Yapalım ( ?action= gibi )
- Görsel Ders: Php ile Bot Yapımı
- iGoogle Gibi Hava Durumuna Göre Resim Yazdırma

Eklediğiniz için teşekkür ederim derslerinizin devamını dilerim
$cek = mysql_query(“SELECT * FROM yazilar ORDER by id DESC LIMIT 0,04″);
while($yaz=mysql_fetch_array($cek)){
$id = $yaz['id'];
$baslik = $yaz['baslik'];
$icerik = $yaz['icerik'];
$kisaicerik = substr(“$icerik”, 0,330);
$gonderen = $yaz['gonderen'];
$tarih = $yaz['tarih'];
$hit = $yaz['hit'];
Hocam böyle bişey daha kısa sanki ?
bu kod oldukça eksik. örnekte ise belirli bir noktadan kesiyor. konuya göre yetersiz kalabilir :/
iyi günler, iyi çalışmalar…
$kisaicerik = substr(”$icerik”, 0,330);
bunu örnek göstermek istemiştim hocam
hmm anladım. yanlız biz burada daha yı bularak işlem yapıyoruz. yani onun > karakterine olan kısmı çekmemiz lazım. eğer siz 300 gibi sabit sayılar girerseniz o direk kesme işlemi yapacaktır. cümle bitmese bile kesecektir. benim yaptığım formülün daha farklısı da olabilir tabi. yanlız dediğim gibi bu formül gerekli daha olayı için.
<?php
$etiket = ‘Devamı için tıklayınız’;
$yazi = str_replace(‘‘,$etiket,$_POST['yazi'],$sayac);
if($sayac >= 1)
{
$parcala = explode($etiket,$_POST['yazi']);
echo $parcala[1];
} else {
echo $yazi;
}
?>
Php5
Saol hoca İşime Yaradı
Merhabalar,
04-Kasım-2008 de eklenmiş ve halen güncelliğini koruyor.
Kod için teşekkürler…