У меня есть куча файлов с данными отформатированных следующим образом: INT | INT | Строка | строкаPHP sscanf не печатает первую строку в файле, но следующие строки
У меня есть некоторые функции, чтобы получить все файлы каталог, отформатируйте их имена и сделайте из него раскрывающееся меню.
Из этого пользователя выбирается файл, который он хочет открыть.
Выбранный файл (его имя) отправляется через 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 теги имеют второй строка данных в них, как и должно быть, поэтому почему она не читает, не сканирует и не печатает первую строку файла?
Да, это было причиной моей проблемы. Большое спасибо. Просто преобразовали файлы из UTF8-BOM в UTF8. –