• 02-10-2016, 22:50:25
    #1
    Merhaba arkadaşlar bir konu hakkında yardıma ihtiyacım var konu databaseden gelen makalelerdeki yazıları mesela 50 kelimelik bölümlere ayırıp bunları ayrı ayrı yazabilecegim kod bir türlü beceremedim yardım edecek arkadaşlara şimdiden teşekkürler

    <?php
    $yazi = $cek['icerik'];
    $kelime = explode(" ",$yazi); // önce yazıyı kelimelere bölelim..
    $say = count($kelime); // kaç kelime oldu bakalım..
    $sinir = 100; // sınır belirleyelim..
    if($say <= $sinir)
    { $kes = $say*50/100; } // eğer metindeki kelime sayısı sınırımızdan az ya da eşit ise yarısını keselim..

    else { $kes = $sinir; } // sınırdan çok ise, sınır belirlediğimiz kelime sayısı olsun..
    for($i = 0; $i <= $kes; $i++) // yazıyı ekrana basalım..
    {

    echo $kelime[$i]." ";


    }
    ?>
  • 03-10-2016, 07:54:34
    #2
    Ne güzel kod yazmışsın işte sorun nerede ki? Anlat yardımcı olalım.

    Bu arada $yazi = $cek['icerik']; satırından sonra şu kodu ekle:
    $yazi = preg_replace('/\s+/',' ',$yazi);
    art arda birden çok boşluk olursa bu kod mantıksal hatanın önüne geçecektir.
  • 03-10-2016, 08:30:24
    #3
    webkolog adlı üyeden alıntı: mesajı görüntüle
    Ne güzel kod yazmışsın işte sorun nerede ki? Anlat yardımcı olalım.

    Bu arada $yazi = $cek['icerik']; satırından sonra şu kodu ekle:
    $yazi = preg_replace('/\s+/',' ',$yazi);
    art arda birden çok boşluk olursa bu kod mantıksal hatanın önüne geçecektir.

    kodda sıkıntı yok makalelerin başlarından istedigim kelime kadar kesiyorum ama verdiginiz tedbiri yinede uyguladım sorun şu makalenin içerisine ads reklamları gömücem ama makalenin ilk kısmını çekebiliyorum sonraki kısmını alamıyorum

    $yazi = $cek['icerik'];
    $yazi = preg_replace('/\s+/',' ',$yazi); //art arda birden çok boşluk olursa mantıksal hatanın önüne geçecektir
    $kelime = explode(" ",$yazi); // önce yazıyı kelimelere bölelim..
    $say = count($kelime); // kaç kelime oldu bakalım..
    $sinir = 50; // sınır belirleyelim..
    if($say <= $sinir)
    { $kes = $say*50/100; } // eğer metindeki kelime sayısı sınırımızdan az ya da eşit ise yarısını keselim..

    else { $kes = $sinir; } // sınırdan çok ise, sınır belirlediğimiz kelime sayısı olsun..
    for($i = 0; $i <= $kes; $i++) // yazıyı ekrana basalım..
    {
    echo $kelime[$i]." "; //verilen kelime kadar ekrana bas
    }

    echo "ads reklam";

    echo $kelime[$i]." "; //kalan kelimeleri ekrana bas
  • 03-10-2016, 08:40:22
    #4
    Oradaki sınır ne amaçlı?

    Kodlarının $say = count($kelime); satırından sonra tekrar kodladım:
    $yazi = $cek['icerik'];
    $yazi = trim(preg_replace('/\s+/',' ',$yazi));
    $kelime = explode(" ",$yazi);
    $say = count($kelime);
    $kalan_say = $say;
    $ilk_dongu_say = ceil($say / 50);
    $son_dongu_say = 50;
    $kelime_gruplari = array();
    $sayac = 0;
    for ($i = 0; $i < $ilk_dongu_say; $i++) {
    	if ($kalan_say < 50)
    		$son_dongu_say = $kalan_say;
    	for ($j = 0; $j < $son_dongu_say; $j++) {
    		$kelime_gruplari[$i][$j] = $kelime[$sayac];
    		$sayac++;
    	}
    	$kalan_say = $kalan_say - 50;
    }
    //bu eşkilde kullanabilirsin:
    $kelime_gruplari[0][0]; //1. 50 grubun ilk kelimesi
    $kelime_gruplari[1][0]; //2. 50 grubun ilk kelimesi
    $kelime_gruplari[0][4] //1. 50 grubun 5. kelimesi
  • 03-10-2016, 09:27:18
    #5
    oradaki sınır mesela haberde 1000 kelime var bu 1000 kelimeyi haberler sayfasına basmamak için sınırlama getiriyor yani 50 kelime say haberler sayfasında bas normalde haber sayfasında direkt içerigi çagırıyordum ama reklam performansı düşük bu nedenle reklamı haberin belli bir karakt erden sonrasına gömücem

    koddaki mantık şu

    yazıyı al

    yazıyı kelimelere çevir kaç kelime var say şayet kelimeler sınırdan düşükse ekrana bas

    fakat kelimeler sınırdan büyükse sınır kadar olanını ekrana bas

    istedigim ise haber içerisinde bu sınırdan sonrakinide ekrana bas ama bir türlü çözemedim hep ilk kelimeleri çagırıyor

    video ekledim bakabilirsiniz


    https://youtu.be/WfqeFH580XI
  • 03-10-2016, 13:08:39
    #6
    Tamam işte, bu yazdığım kod o işi görüyor.
    webkolog adlı üyeden alıntı: mesajı görüntüle
    Oradaki sınır ne amaçlı?

    Kodlarının $say = count($kelime); satırından sonra tekrar kodladım:
    $yazi = $cek['icerik'];
    $yazi = trim(preg_replace('/\s+/',' ',$yazi));
    $kelime = explode(" ",$yazi);
    $say = count($kelime);
    $kalan_say = $say;
    $ilk_dongu_say = ceil($say / 50);
    $son_dongu_say = 50;
    $kelime_gruplari = array();
    $sayac = 0;
    for ($i = 0; $i < $ilk_dongu_say; $i++) {
    	if ($kalan_say < 50)
    		$son_dongu_say = $kalan_say;
    	for ($j = 0; $j < $son_dongu_say; $j++) {
    		$kelime_gruplari[$i][$j] = $kelime[$sayac];
    		$sayac++;
    	}
    	$kalan_say = $kalan_say - 50;
    }
    //bu eşkilde kullanabilirsin:
    $kelime_gruplari[0][0]; //1. 50 grubun ilk kelimesi
    $kelime_gruplari[1][0]; //2. 50 grubun ilk kelimesi
    $kelime_gruplari[0][4] //1. 50 grubun 5. kelimesi
    Şu kodlarla test edebilirsin:
    $grup_say = 1;
    $kelime_say = 1;
    foreach ($kelime_gruplari as $kelimeler) {
            $kelime_say = 1;
    	echo "<strong>".$grup_say.". KELİME GRUBU:</strong><br>";
    	foreach ($kelimeler as $kelime) {
    		echo $kelime." (".$grup_say.". gruptaki ".$kelime_say.". kelime)<br>";
                    $kelime_say++;
    	}
    	echo "<hr>";
            $grup_say++;
    }
  • 03-10-2016, 14:06:36
    #7
    o kadar php bilgim olsa neden olmasın ama senin söyledigin gibi degil

    benim istedigim örnegin makaleden 100 cü kelimeden sonra reklam koymak ardından yazıya devam etmek.


    edit

    sıkıntılı bir süreçti geçici çözümlerle hallettim ama kod hala içime sinmiyor kelime bazlı degilde karakter bazlı bölme uyguladım buda yazıda html kodu varsa onuda bölerki istenmeyen durum olur haberlerimde pek html kodu kullanmadıgım için idare eder işte

    bu sayede reklamlarıda responsive yaptık kontrol etmek isteyen için link http://merzifon.com/haber.php?id=288

    <?php
    $yazi = $makale_cek_yeni['icerik'];
    $uzunluk = strlen($yazi); //yazıda kaç karakter var
    
    $sonuc = trim( strrev( strstr( strrev( substr($yazi,0,1000) ), " " ))); //ilk bölümü ters yüz ederek boşluga kadar bulma
    $kesim = strlen($sonuc);  //kesilecek kısmın karakter sayısını bulma
    
    echo $sonuc;  //kesilen ilk kısım
    ?>
    <div class="ads"><?php include("ads.php");?></div>
    <?php
    $devami = substr($yazi, $kesim, $uzunluk);  //devamını döküyoruz
    echo $devami; 
    ?>