title tagı oluşturmak ilgili bir sıkıntım var
şöyleki
Burada Bizim Yazımız Var ve Biz Bu Yazıyı Sayfamızın Title Tagında Kullanacağız
diye title tagımız var ancak title tagını 65 karakterde kesmek gerekiyor..
kesince
Burada Bizim Yazımız Var ve Biz Bu Yazıyı Sayfamızın Title Tagınd
kalıyor ve bazen bu anlamsız kelimeler olabiliyor...
bunun için isteğim alınan 65 karakterin (Burada Bizim Yazımız Var ve Biz Bu Yazıyı Sayfamızın Title Tagınd)
yarım kalan kelimesini (Tagınd) almamak
dolayısıyla bu cümlede son boşluktan sonrasını almamak
sonuç olarak istenen title tagı bu şekilde olmalı
Burada Bizim Yazımız Var ve Biz Bu Yazıyı Sayfamızın Title
bununla ilgili birşeyler geliştirdim ama biraz gereksiz kodlar oldu
yaptığım şu
65 karaktere kadar olan cümleyi aldım
kelimeleri boşluklarla explode ederek ayırdım
for döngüsünde oluşan kelimekadar-1 döngüye girerek
ve yanyana yazdırarak titleyi oluşturdum ama anlamsızca oldu
muhtemelen daha kolay yolu vardır diye düşünüyorum....
iyi çalışmalar...
title tagı için kelime bölme
10
●913
- 27-10-2010, 11:30:43
- 27-10-2010, 12:04:28Kullandığım fonksiyon. Kelimeyi anlamsız yerde bölmez...
function metin_bol($metin, $baslangic, $uzunluk) { if(strlen($metin) > $uzunluk-$baslangic ){ $devam = ""; $harfsayi = strlen(trim($metin)); $metin = substr($metin, $baslangic, $uzunluk); $dizi = explode(' ', $metin); if(count($dizi)>=2){ array_pop($dizi); } $metin = implode(' ', $dizi); $metin = trim($metin); $sonsayi = strlen($metin); }// belirtilen aralık eğer $metinden büyükse olduğu gibi bırak metin'i $metin = "$metin "; return $metin; }
$aaa=metin_bol("Burada Bizim Yazımız Var ve Biz Bu Yazıyı Sayfamızın Title Tagında Kullanacağız",0,65);
Ha birde bu iş için wordwrap ta işini görebilir...
http://www.php.net/manual/tr/function.wordwrap.php - 27-10-2010, 18:55:37Levye adlı üyeden alıntı: mesajı görüntüle

Arkadaşın istemediği şeklin sonuna ... koymuşsun
"Burada Bizim Yazımız Var ve Biz Bu Yazıyı Sayfamızın Title Tagınd ..." - 27-10-2010, 23:04:57mantığını düşünelim karakter saymaktan çok kelime saymak daha iyi.
kelime1 kelime2 kelime3 kelime 4 , türkçe dil yapısında tahminimce 14 harften daha fazla kelime olmadığını varsayar isek 6 kelimeyi alabiliriz.
php koduna gelir isek
<? $string = 'kelime1 kelime2 kelime3 kelime5 kelime6 kelime7 ve devammmmmm ediyor'; $baslik = explode(" " ,$string); $yeni_baslik = ''; while ($i <= 6) { $yeni_baslik. = " ".$baslik[$i]; } ve $yeni_baslik = trim($yeni_baslik) ; // ilk bastaki boslugu yok etmek icin // basit bir yontem farkli şekilde de yapılabilir aşırı anormal bir durum yoksa //kullanılabilecek bir yöntemdirbu arada kodları hızlı yadım syntax hatası olabilir. - 28-10-2010, 01:16:15Üyeliği durduruldubiliyorum bu bir çözüm önerisi değil ama nedense üstüme vazife edindim,eagle_one adlı üyeden alıntı: mesajı görüntüle
burada bizim yazımız var ve biz bu yazıyı sayfamızın title tagın ne kadar garipse,
burada bizim yazımız var ve biz bu yazıyı sayfamızın title da en az o kadar garip görünüyor bence
3 nokta koyunca en azından devamı var ama sığmadı anlamını çıkarıyor kullanıcı
- 28-10-2010, 02:59:30Üyeliği durdurulduexplode ile böldügün seyi implode ile tekrar birlestirebilirsin.. onun disinda wordwrap sayfasina link verilmis.. az asagi inip baktigimiz zaman tamda aradigin seyi yapan bir fonksiyon var zaten.. kolay gelsin..
<?php function cutstr($str, $length){ $cut=(array)explode('\n\n',wordwrap(($str),$length,'\n\n')); return $cut[0]; } echo cutstr('Burada Bizim Yazimiz Var ve Biz Bu Yaziyi Sayfamizin Title Taginda Kullanacagiz',65); //Burada Bizim Yazimiz Var ve Biz Bu Yaziyi Sayfamizin Title ?> - 28-10-2010, 10:55:16Sonsuz döngü var hocam burda. $i değişkenini hiç arttırmamışsın. $i 'yi 6'dan küçük tanımlarsa döngü sürekli çalışır.Efe4ka adlı üyeden alıntı: mesajı görüntüle
- 28-10-2010, 11:20:14O zaman benim fonksiyonu şöyle düzeltelim mi ?Levye adlı üyeden alıntı: mesajı görüntüle

Cümledeki harf sayısı "uzunluk"tan büyük ise sonuna ... koyalım
function metin_bol($metin, $baslangic, $uzunluk) { if(strlen($metin) > $uzunluk-$baslangic ){ $devam = ""; $harfsayi = strlen(trim($metin)); $metin = substr($metin, $baslangic, $uzunluk); $dizi = explode(' ', $metin); if(count($dizi)>=2){ array_pop($dizi); } $metin = implode(' ', $dizi); $metin = trim($metin)."..."; $sonsayi = strlen($metin); }// belirtilen aralık eğer $metinden büyükse olduğu gibi bırak metin'i $metin = "$metin "; return $metin; }

