我们有300多个txt文件,其中基本上是电子邮件的复制品,每个txt文件都有以下格式:
To: blabla@hotmail.com
Subject: blabla
From: bla1@hotmail.com
Message: Hello World!
目的是编写一个PHP脚本,该脚本遍历每个文件(都位于同一目录中),并在from字段中打印出每个“唯一”电子邮件地址的列表。这个概念非常简单。
有人能指出我在正确的方向吗?到目前为止,我已经设法让我的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);
?>
有人能把我推向正确的方向吗?
答案 0 :(得分:0)
使用命令行工具更容易:
exec("grep '^From: ' *.txt|uniq", $output);
只返回所有文本文件中以From:
开头的行。一个简单的子字符串提取可以获得实际的电子邮件地址,并且您已经为自己节省了大量的PHP工作。