我在目录
中保存了许多文本文件/results/...
所有文本文件都使用unixtime标记命名,在以下每个文件中都有:
#text¬test¬test1¬test2¬test3¬test4¬1262384177
每段文字都以'¬'分隔。
然后我想将文本文件的内容提供给一个数组并输出它,例如一个表,但是对于每个文件(也许是循环的?)
如果有,但只适用于一个文件和固定文件名:
$filename = "results/unixtime.txt";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);
$array01 = explode("¬",$contents);
$count = count($array01);
echo "<table width = 500 border=1 cellpadding=4>";
$i=0;
for ($i=0;$i<$count;$i++) {
echo "<tr><td>";
echo $array01[$i];
echo "</td></tr>";
}
echo "</table>";
答案 0 :(得分:3)
有几件事:
file_get_contents()
来加载文件。它只是一行代码而不是三行代码,你不需要; foreach
循环遍历数组,除非您明确需要循环计数器。循环结构/计数器只是另一个可以产生简单错误的区域; opendir()
,readdir()
和closedir()
来阅读目录内容;和filetype()
和/或检查名称和/或扩展程序,将其限制为您感兴趣的文件。示例:
$directory = "results/";
$dir = opendir($directory);
while (($file = readdir($dir)) !== false) {
$filename = $directory . $file;
$type = filetype($filename);
if ($type == 'file') {
$contents = file_get_contents($filename);
$items = explode('¬', $contents);
echo '<table width="500" border="1" cellpadding="4">';
foreach ($items as $item) {
echo "<tr><td>$item</td></tr>\n";
}
echo '</table>';
}
}
closedir($dir);
答案 1 :(得分:3)
我建议使用相当未知的glob
function来检测所有文件。然后将所有文件名放在一个方便的数组中,只需迭代并打开/读取每个文件名。有点像这样:
$files = glob('*.txt');
while(list($i, $filename) = each($files)){
//what you have now
}
答案 2 :(得分:2)
您可以通过opendir获取位于“结果”中的所有文件。
还有一个例子......
<?php
$dir = "/etc/php5/";
// Open a known directory, and proceed to read its contents
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
echo "filename: $file : filetype: " . filetype($dir . $file) . "\n";
}
closedir($dh);
}
}
?>
答案 3 :(得分:2)
抓取目录中的文件并读取每个文件名。
<?php
if ($handle = opendir('.')) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
$filename = $file;
//your code
}
}
closedir($handle);
}
?>
答案 4 :(得分:0)
这是一种更优雅的写作方式brianreavis solution,也使用file_get_contents
代替fopen
,fread
和fclose
,它更快,不那么冗长。
foreach (glob('*.txt') as $filename)
{
$contents = file_get_contents($filename);
}
答案 5 :(得分:0)
使用此代码,将DOCROOT替换为您要扫描的目录。
foreach (scandir(DOCROOT.'css') as $dir) {
echo $dir . "<br>";
echo file_get_contents(DOCROOT . 'css/' . $dir ) . "<hr />";
}