• 06-11-2015, 06:02:55
    #1
    merhaba arkadaşlar php ile bir sorunum var yardımcı olursanız sevinirim
    benim yapmak istediğim diyelim ki 2000 tane kelime içeren bir içerik yazım var ben bu yazıyı 2 ye bölmek istiyorum. fakat yazının içinde resimlinkleri ve font karakterleri olduğunda resim linkini tam ortadan bölüyor.
    örnek olarak
    $konu ="bu deneme bir yazıdır. <span style='color: #444444;'>bu denemenin devamıdır.</span><img src='http://www.orneksite.com'  />"
    $keys = array_keys(str_word_count($konu2, 2));
    $konusayisi = str_word_count($konu);
    echo $icerik1 = substr($konu, 0, $keys[6]);
    echo $icerik2 = substr($konu, $keys[6], $keys[$konusayisi-1]);

    böyle yaptığımda span tagını tam içeriden bölüyor. benim istediğim html karakterlere dokunmadan yazıyı 2 ye bölmek. eğer html karakterlere denk gelirse onu atlayıp en yakındaki kelimeye geçip bölmek. bunu nasıl yapabilirim.
  • 06-11-2015, 07:12:13
    #2
    Üyeliği durduruldu
    <?php
    $text = "A very long woooooooooooooooooord. and something";
    $newtext = wordwrap($text, 8, "\n", false);
    
    echo "$newtext\n";
    ?>
    Wordwrap fonksiyonu işinizi görebilir.
  • 06-11-2015, 07:42:10
    #3
    malesef wordwrap fonksiyonu işimi görmüyor. yardımcı olabilecek bir arkadaş var mı acaba?
  • 23-11-2015, 21:00:59
    #4
    strpos ile (bu arada strpos büyük küçük karaktere duyarlıdır, duyarsızı ise stripos) öncelikle bölmek istediğin etiket, kelime ya da her ne ise onun sırasını bul, sonra explode ile o sıradan sonrasını diziye ata, sonra istersen implode ile tekrar birleştir top sende örnek: metnin komplesi $icerik olsun, bölmek istediğini kısım ise bölünecek diye bir kelime olsun. bu durumda öncelikle strlen ile toplam karakter sayısını bulup sonra da bölünecek kelimesini aratıyoruz falan ya da basitçe örnek kod vereyim
    $toplam_karakter=strlen($icerik); //içeriğimizin toplam karakter sayısı
    $birinci_karakter_sayisi=strpos($icerik,"bölünecek "); // bölünecek kelime/ifade/etiket/karakterden önceki karakter sayısı
    $ikinci_karakter_sayisi=$toplam-$birinci_karakter_sayisi; // bölünecek ifadeden sonraki (bölünecek ifade dahil) karakter sayısı
    $birinci_kisim=substr($icerik,0,$birinci_karakter_ sayisi); // içeriği böldükten sonraki birinci kısım
    $ikinci_kisim=substr($icerik,-$ikinci_kisim_karakter_sayisi); // içeriği böldükten sonraki ikinci kısım
    echo $birinci_kisim;
    echo $ikinci_kisim;
    Not bu örnek en basit halidir, tabii ki içeriğinizde açılmış olan html etiketleri varsa böldükten sonra da kapatılması gerekir, onun kontrolünü de ayrıca yaptırmak lazımdır. ama temek olarak bu mantığı kullanabilirsiniz.
  • 23-11-2015, 23:02:06
    #5
    $fmd=explode("<",$metin);
    $sayi1=ceil(strlen($metin)/2);
    $parca1="";
    $parca2="";
    foreach($fmd as $fm=>$md){
    if(intval(strlen($parca1)+strlen($md.">"))<=$sayi1 or $parca==2)$parca1.="$md>";
    else {
    	$parca=2;
    	$parca2.="$md>";
    }
    }
    bu olabilir

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 23:02:06 -->-> Daha önceki mesaj 22:59:12 --

    <br><hr> gibi kodlar işini bozabilir bu konuda çözüm olarak
    $a1=array("<br>","<hr>");
    $a2=array("***","###");
    $metin=str_replace($a1,$a2,$metin);
    
    
    //daha sonrada parçaları aynı şekilde geri düzeltiyoruz
    
    $parca1=str_replace($a2,$a1,$parca1);
    $parca2=str_replace($a2,$a1,$parca2);