Как с помощью PHP вывести текстовый файл в таблицу вместе со ссылками?
-
13-09-2019 - |
Вопрос
У меня есть этот текстовый файл:
Dec 04 20:15 Naruto 123
Dec 04 17:42 Naruto 98
Dec 04 16:19 D Gray Man 001
Dec 04 16:05 Bleach 128
Dec 04 12:13 50 x 50 44
Мне нужно вывести содержимое в таблицу с датой и временем в отдельном столбце, а плиткой и главой - в другом.
Также..Мне нужно заменить заголовок и главу ссылкой, которая должна быть отформатирована следующим образом:
<a href="/title/title chapter">title chapter</a>
Для пояснения заголовки в текстовом файле следующие:
Naruto
Naruto
D Gray Man
Bleach
50 x 50
А главы - это номера, которые следуют:
123
98
001
128
44
Решение
- Прочитайте файл и сохраните каждую строку в массиве.
- Открыть
<table>
ярлык - Пройдитесь по массиву и извлеките дату/время/название/главу, используя регулярное выражение.
Вот регулярное выражение для начала — возможно, вы захотите немного изменить его в соответствии со своими потребностями:
/^([a-zA-Z]{3}\s\d{2})\s(\d{2}:\d{2})\s(.+?)\s(\d+)\s*?$/
//$1 contains date : "Dec 04"
//$2 contains time : "20:15"
//$3 contains the title : "Naruto"
//$4 contains the chapter : "123"
Для каждого элемента массива напишите соответствующее <tr>
& <td>
теги, заполненные извлеченными данными.
Обновлять:
<?php
$filedata = "Dec 04 20:15 Naruto 123
Dec 04 17:42 Naruto 98
Dec 04 16:19 D Gray Man 001
Dec 04 16:05 Bleach 128
Dec 04 12:13 50 x 50 44";
$lines = explode("\n", $filedata);
echo "<table border=\"1\">";
foreach($lines as $line)
{
echo "<tr>";
preg_match("/^([a-zA-Z]{3}\s\d{2}\s\d{2}:\d{2})\s(.+?)\s(\d+)\s*?$/", $line, $matches);
echo "<td>$matches[1]</td>";
echo "<td><a href=\"/$matches[2]/$matches[2] $matches[3]\">$matches[2] $matches[3]</a></td>";
echo "</tr>";
}
echo "</table>"
?>
Другие советы
Что-то вроде этого должно помочь (код не проверял):
$data = Explode ( "\n", File_Get_Contents ( 'yourfile' ) );
foreach ( $data as $key => $line )
{
$tmp = Explode ( ' ', $line );
$month = $tmp[0];
$day = $tmp[1];
$time = $tmp[2];
$numOfEntries = Count ( $tmp );
$chapter = $tmp[$numOfEntries - 1];
$title = '';
for ( $i = 3; $i < $numOfEntries - 1; $i++ )
$title .= $tmp[$i] . ' ';
$title = Trim ( $title );
$link = '<a href="/' . $title . '/' . $title . ' ' . $chapter . '">' . $title . ' ' . $chapter . '</a>';
}
Не связан с StackOverflow