1

自从我使用 PHP 以来已经有好几年了,而且我有点生疏了。我正在尝试编写一个快速脚本,该脚本将打开一个大文件并将其拆分为一个数组,然后在每个值中查找类似的事件。例如,该文件由以下内容组成:

Chapter 1. The Beginning 
 Art. 1.1 The story of the apple
 Art. 1.2 The story of the banana
 Art. 1.3 The story of the pear
Chapter 2. The middle
 Art. 1.1 The apple gets eaten
 Art. 1.2 The banana gets split
 Art. 1.3 Looks like the end for the pear!
Chapter 3. The End
…

我希望脚本自动告诉我其中两个值中包含字符串“apple”并返回“Art. 1.1 The Story of the apple”和“Art. 1.1 The apple gets eating”,然后也执行香蕉和梨也一样。

我不想在数组中搜索特定字符串,我只需要它来计算出现次数并返回什么和在哪里。

我已经有了打开文件然后将其拆分为数组的脚本。只是无法弄清楚如何找到类似的事件。

<?php
$file = fopen("./index.txt", "r");
$blah = array();
while (!feof($file)) {
   $blah[] = fgets($file);
}
fclose($file);

var_dump($blah);
?>

任何帮助,将不胜感激。

4

1 回答 1

1

这个解决方案并不完美,因为它计算了文本中的每个单词,所以也许您必须对其进行修改以更好地满足您的需求,但它可以准确统计文件中每个单词被提及的次数以及确切的次数行。

$blah = file('./index.txt') ;

$stats = array();
foreach ($blah as $key=>$row) {
    $words = array_map('trim', explode(' ', $row));
    foreach ($words as $word)
        if (empty($stats[$word]))  {
            $stats[$word]['rows'] = $key.", ";
            $stats[$word]['count'] = 1;
        } else {
            $stats[$word]['rows'] .= $key.", ";
            $stats[$word]['count']++;
        }
}
print_r($stats);

我希望这个想法能帮助您继续前进并进一步完善它以更好地满足您的需求!

于 2013-08-30T04:03:27.927 回答