Php 显示多个文本文件的内容
我有许多文本文件保存在目录中Php 显示多个文本文件的内容,php,Php,我有许多文本文件保存在目录中 /results/... 所有文本文件都使用unixtime戳记命名,以下每个文件中都有: #text¬test¬test1¬test2¬test3¬test4¬1262384177 每段文字用“,”分隔 然后,我想将文本文件的内容输入到一个数组中并输出它,例如在一个表中,但是对于每个文件(可能是循环?) 如果您有此功能,但它仅适用于一个文件和固定的文件名: $filename = "results/unixtime.txt"; $handle = fopen(
/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>";
$filename=“results/unixtime.txt”;
$handle=fopen($filename,“r”);
$contents=fread($handle,filesize($filename));
fclose($handle);
$array01=分解(“,”,$contents);
$count=计数($array01);
回声“;
$i=0;
对于($i=0;$i),您可以通过获取位于“结果”中的所有文件
还有一个例子
<?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);
}
}
?>
有几件事:
除非你处理的是非常大的文件,你只需要加载文件就可以了
使用foreach
在数组上循环,除非您明确需要循环计数器。循环条件/计数器只是另一个可以产生简单错误的区域
使用、和读取目录内容;以及
目录将包含“.”和“.”等条目。请使用和/或检查名称和/或扩展名,将其限制为您感兴趣的文件
例如:
$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);
$directory=“results/”;
$dir=opendir($directory);
while(($file=readdir($dir))!==false){
$filename=$directory.$file;
$type=filetype($filename);
如果($type=='file'){
$contents=file\u get\u contents($filename);
$items=分解(“,”,$contents);
回声';
foreach($items作为$item){
回显“$item\n”;
}
回声';
}
}
closedir($dir);
我建议使用相当未知的方法来检测您的所有文件。然后,将所有文件名放在一个方便的数组中,只需迭代并打开/读取每个文件。类似如下:
$files = glob('*.txt');
while(list($i, $filename) = each($files)){
//what you have now
}
抓取目录中的文件并读取每个文件名
<?php
if ($handle = opendir('.')) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
$filename = $file;
//your code
}
}
closedir($handle);
}
?>
来源:这是一种更优雅的书写方式,也可以使用文件获取内容
而不是fopen
,fread
和fclose
,它更快,更不冗长。
foreach (glob('*.txt') as $filename)
{
$contents = file_get_contents($filename);
}
使用此代码,将DOCROOT替换为要扫描的目录
foreach (scandir(DOCROOT.'css') as $dir) {
echo $dir . "<br>";
echo file_get_contents(DOCROOT . 'css/' . $dir ) . "<hr />";
}
foreach(scandir(DOCROOT.css')作为$dir){
echo$dir.“
”;
回显文件获取内容(DOCROOT.css/.$dir)。“
”;
}
实际问题是什么?我的意思是..你自己回答了,是的,在文件列表上做一个循环。谢谢分享。我以后会使用:)“除非你处理非常大的文件,只要使用file\u get\u contents()
…”-file\u get\u contents()
有$offset和$maxlen参数,根据手册,“是将文件内容读入字符串的首选方法。如果操作系统支持,它将使用内存映射技术来提高性能。”。有没有理由不在大文件中使用它?@Alex:TBH我从来没有在PHP中处理过足够大(比如说超过20MB)的文件,以至于我一直担心文件内容()对内存的影响。