(PHP) rastgele bir büyük metin belgeye 10 kelimelik bir cümle eklemek

2 Cevap php

Ben büyük metin metin paragrafları tam 140K veya daha büyük dosyaları ve dosya daha sonra 200 kelime içeriyorsa rasgele aralıklarla bu dosyaya bir cümle eklemek gerekir.

Ben büyük belge boyunca rastgele eklemek için gereken cümle 10 kelime uzun.

Ben kimse benim için bunu hangi varsa ben PHP veya bir linux komut satırı uygulamasını kullanmak benim LAMBASI sitesi çalıştıran sunucu üzerinde tam kontrole sahip.

Bu mücadele için en iyi nasıl herhangi bir fikir büyük mutluluk duyacağız.

Teşekkürler

Markos

2 Cevap

Sen str_word_count() dizesindeki kelimelerin sayısını almak için kullanabilirsiniz. Eğer dize ya da eklemek isterseniz oradan belirlemek. Takmadan gelince "rastgele," Bu tehlikeli olabilir. Eğer bir çift rastgele yerlerde bunu eklemek istediğiniz önermek demek? Eğer öyleyse, file() ile bir dizi olarak dosyanın içeriğini yüklemek ve $file[0] ve count($file); arasında herhangi bir yerde cümle eklemek

Aşağıdaki kod rastgele yerlerde içine dizeleri bulmak ve eklemek için hile yapmak gerekir. Oradan sadece dosyasını yeniden yazmak gerekir. Bu çok kaba bir şekilde ve hesap noktalama veya böyle bir şey içine almaz, bu yüzden bazı ince ayar büyük olasılıkla gerekli olacaktır.

$save = array();
$words = str_word_count(file_get_contents('somefile.txt'), 1);

if (count($words) <= 200)
  $save = $words;
else {
  foreach ($words as $word) {
    $save[] = $word;
    $rand = rand(0, 1000);
    if ($rand >= 100 && $rand <= 200)
      $save[] = 'some string';
  }
}

$save = implode(' ', $save);

Bu nedenle, rasgele bir dize koyar, eğer 100 ve 200 dahil arasında ise rastgele bir sayı ve kontrolleri oluşturur ve. Artırmak veya ilave kaç azaltmak için çek rasgele sayı ve bunun aralığını değiştirebilirsiniz. Ayrıca tabii her dizesi arasında en az x sözler vardır yapmak gibi bir şey yapmak için bir sayaç uygulamak.

Yine, bu hesap noktalama ya da bir şey katmaz ve sadece tüm kelimeleri boşluklarla ayrılmış varsayar. Bu yüzden bazı ince ayar bunu gerçekleştirmek için gerekli olabilir, ama bu iyi bir başlangıç ​​noktası olmalıdır.