• 27-10-2010, 11:30:43
    #1
    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...
  • 27-10-2010, 12:04:28
    #2
    Kullandığı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:46:41
    #3
    Üyeliği durduruldu
    cümle yarım kalınca da anlamsız olur. bence en kolayı ve estetiği,

    echo "substr($title,0,65) . "...";

    çıktısı şöyle olacaktır:
    Burada Bizim Yazımız Var ve Biz Bu Yazıyı Sayfamızın Title Tagın...
  • 27-10-2010, 18:55:37
    #4
    Levye adlı üyeden alıntı: mesajı görüntüle
    cümle yarım kalınca da anlamsız olur. bence en kolayı ve estetiği,

    echo "substr($title,0,65) . "...";

    çıktısı şöyle olacaktır:
    Burada Bizim Yazımız Var ve Biz Bu Yazıyı Sayfamızın Title Tagın...



    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:57
    #5
    mantığı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öntemdir
    bu arada kodları hızlı yadım syntax hatası olabilir.
  • 28-10-2010, 01:16:15
    #6
    Üyeliği durduruldu
    eagle_one 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 ..."
    biliyorum bu bir çözüm önerisi değil ama nedense üstüme vazife edindim,
    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
    #7
    Üyeliği durduruldu
    explode 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:16
    #8
    Efe4ka adlı üyeden alıntı: mesajı görüntüle
    mantığı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öntemdir
    bu arada kodları hızlı yadım syntax hatası olabilir.
    Sonsuz 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.
  • 28-10-2010, 11:20:14
    #9
    Levye adlı üyeden alıntı: mesajı görüntüle
    biliyorum bu bir çözüm önerisi değil ama nedense üstüme vazife edindim,
    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ı
    O zaman benim fonksiyonu şöyle düzeltelim mi ?

    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;
    }