【发布时间】:2017-01-26 10:37:02
【问题描述】:
我有一堆数据格式如下的文件: 整数|整数|字符串|字符串
我有一些函数可以获取目录中的所有文件,格式化它们的名称并从中创建一个选择下拉菜单。
用户从中选择他要打开的文件。
选择的文件(其文件名)通过 POST 发送到第二个 php 文件,该文件在下拉表单正下方的 iframe 中打开。
这些是该文件的相关内容:
<table>
<thead>
<tr>
<th>A:</th>
<th>B:</th>
<th>C:</th>
</tr>
</thead>
<tbody>
<?php
$fl = $_POST["file"];
$currentfile = fopen("./dir/$fl","r");
if ($currentfile) {
while (($line = fgets($currentfile)) !== false) {
$n = sscanf($line, "%d|%d|%[^|]|%[^\n]", $a,$b,$c,$d);
print "<tr><td>$a</td><td>$b</td><td>$d</td></tr>";
}
fclose($currentfile);
} else {
print "Error: Couldn't open file.<br>";
}
?>
</tbody>
</table>
现在不知何故,每个文件的第一行没有显示在由此生成的表中,其他一切都很好。
例如,这里有一个文件。
1|334|Item 1
2|837|Item 2
3|321|Item 3
4|124|Item 4
5|331|Item 5
etc...
这是我得到的输出。
A: B: C:
2 837 Item 2
3 321 Item 3
4 124 Item 4
5 331 Item 5
etc...
或者在代码中:
<table>
<thead>
<tr>
<th>A:</th>
<th>B:</th>
<th>C:</th>
</tr>
</thead>
<tbody>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>2</td>
<td>837</td>
<td>Item 2</td>
</tr>
<tr>
<td>3</td>
<td>321</td>
<td>Item 3</td>
</tr>
<tr>
<td>4</td>
<td>124</td>
<td>Item 4</td>
</tr>
<tr>
<td>5</td>
<td>331</td>
<td>Item 5</td>
</tr>
etc...
</tbody>
</table>
从上面的代码可以看出,打印了 td 标签,但是里面没有数据,而第二组 td 标签里面有第二行数据,应该是这样,那为什么不呢?它读取、扫描并打印文件的第一行?
【问题讨论】:
标签: php file-io printing fgets scanf