搜索数组的重复php

时间:2013-08-30 03:26:23

标签: php arrays recursive-regex find-occurrences

自从我使用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苹果的故事”和“Art.1.1苹果被吃掉”,然后香蕉和梨也是如此。

我不打算在数组中搜索特定的字符串,我只需要它来计算出现次数并返回内容和位置。

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

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

var_dump($blah);
?>

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

这个解决方案并不完美,因为它会对文本中的每个单词进行计数,因此您可能需要对其进行修改以更好地满足您的需求,但它可以准确地统计每个单词在文件中提到的次数以及确切地说在哪些行上。

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

我希望这个想法可以帮助你进一步完善并更好地满足你的需求!