Чтение содержимого нескольких текстовых файлов и распечатка определенной строки в PHP - PullRequest
0 голосов
/ 24 августа 2011

У нас есть более 300 текстовых файлов, которые в основном являются копиями электронных писем, каждый текстовый файл имеет следующий формат:

To: blabla@hotmail.com
Subject: blabla
From: bla1@hotmail.com
Message: Hello World!

Цель состоит в том, чтобы написать скрипт PHP, который сканирует каждый файл.(все они находятся в одном каталоге) и распечатывает список каждого «уникального» адреса электронной почты в поле «от».Концепция очень проста.

Кто-нибудь может указать мне правильное направление здесь?До сих пор мне удалось заставить мой PHP-скрипт читать содержимое всех файлов в каталоге и выводить результат:

<?php
$directory = "emails/";
$dir = opendir($directory);
while (($file = readdir($dir)) !== false) {
  $filename = $directory . $file;
  $type = filetype($filename);
  if ($type == 'file') {
     $contents = file_get_contents($filename);
     $items = explode('/n', $contents);
     echo '<table width="500" border="1" cellpadding="4">';
     foreach ($items as $item) {
       echo "<tr><td>$item</td></tr>\n";
     }
     echo '</table>';
  }
}
closedir($dir);
?>

Итак, теперь мне нужно прочитать и напечатать строку3 каждого из файлов.Я предполагаю, что это так же просто, как добавление в массив в цикле foreach для отображения определенной строки?Я пробовал это, но с синатурой, это немного беспорядок:

<?php
$directory = "emails/";
$dir = opendir($directory);
**$lines = file($filename);**
while (($file = readdir($dir)) !== false) {
  $filename = $directory . $file;
  $type = filetype($filename);
  if ($type == 'file') {
     $contents = file_get_contents($filename);
     $items = explode('/n', $contents);
     echo '<table width="500" border="1" cellpadding="4">';
     foreach ($items as $item) {
       **echo "<tr><td>$lines[2]</td></tr>\n";**
     }
     echo '</table>';
  }
}
closedir($dir);
?>

Может кто-нибудь толкнуть меня в правильном направлении здесь?

1 Ответ

0 голосов
/ 24 августа 2011

Это гораздо проще сделать с помощью инструментов командной строки:

exec("grep '^From: ' *.txt|uniq", $output);

Это вернет ТОЛЬКО строки, начинающиеся с From: из всех текстовых файлов.Простое извлечение подстроки дает вам фактический адрес электронной почты, и вы сэкономили много работы PHP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...