繁体   English   中英

(PHP)将10个单词的句子随机插入大文本文档中

[英](PHP) randomly insert a 10 word sentence into a large text document

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

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

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

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

谢谢

标记

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

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

$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之间(包括100和200之间),如果包含,则放入随机字符串中。 您可以更改随机数和支票的范围,以增加或减少添加的数量。 您还可以实现一个计数器来执行类似的操作,例如,确保每个字符串之间至少有x单词。

再一次,这没有考虑标点符号或其他任何东西,只是假设所有单词都用空格分隔。 因此,可能需要进行一些微调以使其完善,但这应该是一个很好的起点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM