2

我有 140k 或更大的充满文本段落的大型文本文件,并且仅当文件包含超过 200 个单词时才需要以随机间隔在该文件中插入一个句子。

我需要在整个较大文档中随机插入的句子长度为 10 个单词。

我可以完全控制运行我的 LAMP 站点的服务器,因此我可以使用 PHP 或 linux 命令行应用程序(如果存在可以为我执行此操作的应用程序)。

任何关于如何最好地解决这个问题的想法将不胜感激。

谢谢

标记

4

2 回答 2

1

您可以使用str_word_count()来获取字符串中的单词数。从那里,确定是否要插入字符串。至于“随机”插入它可能很危险。您的意思是建议您将其插入几个随机区域吗?如果是这样,请将文件的内容作为数组加载并在和file()之间的任何位置插入您的句子$file[0]count($file);

于 2009-08-23T02:59:32.057 回答
0

以下代码应该可以将字符串定位并插入随机位置。从那里你只需要重写文件。这是一种非常粗略的方法,没有考虑标点符号或类似的东西,因此很可能需要进行一些微调。

$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每个字符串之间至少有单词。

同样,这没有考虑标点符号或任何东西,只是假设所有单词都用空格分隔。所以可能需要一些微调来完善它,但这应该是一个很好的起点。

于 2009-08-23T04:11:13.920 回答