(PHP) случайным образом вставляет предложение из 10 слов в большой текстовый документ - PullRequest
2 голосов
/ 23 августа 2009

У меня есть большие текстовые файлы размером 140k или более, заполненные абзацами текста, и мне нужно вставлять предложение в этот файл через произвольные интервалы, только если файл содержит более 200 слов.

Предложение, которое мне нужно вставить случайным образом по всему крупному документу, состоит из 10 слов.

У меня есть полный контроль над сервером, на котором работает мой LAMP-сайт, так что я могу использовать PHP или приложение командной строки linux, если таковое существует, которое сделает это для меня.

Буду очень признателен за любые идеи о том, как лучше всего справиться с этим.

Спасибо

Mark

Ответы [ 2 ]

1 голос
/ 23 августа 2009

Вы можете использовать str_word_count(), чтобы получить количество слов в строке. Оттуда определите, хотите ли вы вставить строку или нет. Что касается вставки «наугад», это может быть опасно. Вы хотите сказать, что хотите вставить его в несколько случайных областей? Если это так, загрузите содержимое файла в виде массива с помощью file() и вставьте предложение где-нибудь между $file[0] и count($file);

0 голосов
/ 23 августа 2009

Следующий код должен помочь найти и вставить строки в случайные места. Оттуда вам просто нужно переписать файл. Это очень грубый способ, и он не учитывает пунктуацию или что-то в этом роде, поэтому, скорее всего, потребуется некоторая настройка.

$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);

Это генерирует случайное число и проверяет, находится ли оно между 100 и 200 включительно, и, если так, вставляет случайную строку. Вы можете изменить диапазон случайного числа и диапазона проверки, чтобы увеличить или уменьшить количество добавляемых. Вы также можете реализовать счетчик, чтобы убедиться, что между каждой строкой есть не менее x слов.

Опять же, это не учитывает пунктуацию или что-либо еще и просто предполагает, что все слова разделены пробелами. Поэтому для его совершенствования может потребоваться некоторая подстройка, но это должно стать хорошей отправной точкой.

...