PHP скрипт вывода статей из текстовых файлов
17.04.2018 10:17:44 am
И снова привет! Имеется большое количество статей в текстовых файлах, формата txt, по одной статьи в каждом файле. Из этих файлов надо собрать, что-то, типа, блога. В папке лежат файлы 1.txt, 2.txt, 3.txt и т. д. Надо проверить всю папку, собрать из них список всех статей - этот список будет на главной странице. При переходе в одну из статей, надо считывать текст и вставлять его в страницу.
Кто возьмётся за работу? Могу немного оплатить!
Кто возьмётся за работу? Могу немного оплатить!
- Жалоба
17.04.2018 11:15:42 am
Вывести на экран все файлы, которые находятся в папке, например, "txt", можно так:
Но тут будет выведено только названия самих файлов 1.txt, 2.txt, 3.txt. Правильнее будет выводить названия статей.
Выводить статью из файла можно так:
Покажите структуру файлов, что содержат в себе статьи?
$dir = 'txt'; // Директория статей
$files = scandir($dir); // Получение всех файлов
// Прогон всех файлов в цикле
foreach ($files as $file)
{
if ($file == '.' | $file == '..')
{
continue;
}
echo $file . '<br />';
}
Но тут будет выведено только названия самих файлов 1.txt, 2.txt, 3.txt. Правильнее будет выводить названия статей.
Выводить статью из файла можно так:
// Проверка наличия значения параметра id
if (!empty($_GET['id']))
{
$id = (int) $_GET['id'];
$file = $dir . '/' . $id . '.txt';
if (file_exists($file)) // Проверка наличия файла
{
// Чтение файла
$content = file_get_contents($file);
// Вывод содержимого на экран
echo $content;
}
}
Покажите структуру файлов, что содержат в себе статьи?
18.04.2018 08:46:54 am
Office, переименуйте свои файлы: 1.txt, 2.txt, 3.txt на: 1.php, 2.php, 3.php, в начало файла добавьте
И вот Вам код всего блога в одном файле index.php:
<?php
, чтобы получилось так:<?php
$title = "Название статьи";
$text = "Текст самой статьи";
И вот Вам код всего блога в одном файле index.php:
$dir = 'txt';
if (!empty($_GET['id']))
{
$id = (int) $_GET['id'];
$file = $dir . '/' . $id . '.php';
if (file_exists($file))
{
include($file);
echo '<h1><a href="index.php?id=' . $id . '">' . $title . '</a></h1>';
echo $text;
}
}
else
{
$files = scandir($dir);
foreach ($files as $file)
{
if ($file == '.' | $file == '..')
{
continue;
}
include($dir . '/' . $file);
echo '<p><a href="index.php?id=' . (int) $file . '">' . $title . '</a></p>';
}
}
18.04.2018 03:37:24 pm
Scorpion, спасибо, сделал, как Вы показали. А ведь можно все статьи записать в один файл-массив:
и вытаскивать от туда всё, что надо?
<?php
$array = array(
1 => array('title' => 'Название статьи', 'text' => 'Текст самой статьи'),
2 => array('title' => 'Название статьи', 'text' => 'Текст самой статьи'),
3 => array('title' => 'Название статьи', 'text' => 'Текст самой статьи'),
);
и вытаскивать от туда всё, что надо?
18.04.2018 05:02:52 pm
Можно и в одном файле-массиве, создать отдельный файл db.php или написать массив прямо в том же файле, где находится скрипт и опа:
Удобнее тем, что нету кучи файлов, минус в том, что если массив будет содержать огромное количество статей, он будет влиять на время загрузки страницы, даже, где на экране будет выведена одна статья, массив целиком будет обработан php обработчиком.
$array = array(
1 => array('title' => 'Название статьи', 'text' => 'Текст самой статьи'),
2 => array('title' => 'Название статьи', 'text' => 'Текст самой статьи'),
3 => array('title' => 'Название статьи', 'text' => 'Текст самой статьи'),
);
if (!empty($_GET['id']))
{
$id = (int) $_GET['id'];
echo '<h1><a href="index.php?id=' . $id . '">' . $array[$id]['title'] . '</a></h1>';
echo $array[$id]['text'];
}
else
{
foreach ($array as $key => $val)
{
echo '<p><a href="index.php?id=' . (int) $key . '">' . $val['title'] . '</a></p>';
}
}
Удобнее тем, что нету кучи файлов, минус в том, что если массив будет содержать огромное количество статей, он будет влиять на время загрузки страницы, даже, где на экране будет выведена одна статья, массив целиком будет обработан php обработчиком.
18.04.2018 06:57:43 pm
Гениально!
Я попробую скрипт с общим массивом и с каждым отдельным файлом, сравню, что быстрее работает, может разница будет незначительная, так оставлю один массив.
Scorpion, спасибо Вам большое!
Могу перевести пару баксов на Ваш счёт, пришлите номер счёта в личку.
Я попробую скрипт с общим массивом и с каждым отдельным файлом, сравню, что быстрее работает, может разница будет незначительная, так оставлю один массив.
Scorpion, спасибо Вам большое!
Могу перевести пару баксов на Ваш счёт, пришлите номер счёта в личку.
22.04.2018 09:10:08 am
Создал отдельный файл db.php с такой структурой:
При помощи
Спасибо за подробный код.
<?php
$array = array(
1 => array('title' => 'Название статьи', 'text' => 'Текст самой статьи'),
2 => array('title' => 'Название статьи', 'text' => 'Текст самой статьи'),
3 => array('title' => 'Название статьи', 'text' => 'Текст самой статьи'),
);
При помощи
include()
подключаю файл и достаю всё, что надо.Спасибо за подробный код.