Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Прочитать файл в несколько массивов


Автор: slang 25.3.2004, 07:28
Имеется текстовый файл news.base, который содержит например:
Код

[H1]Первая новость[/H1]
Текст Текст Текст [IMAGE]http://www.slang.ru/images/logo.gif[/IMAGE] Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст
Текст [LINK]http://www.slang.ru/images/logo.gif[/LINK]Текст Текст
<!--begin-->
[H1]Первая новость[/H1]
Текст Текст Текст [IMAGE]http://www.slang.ru/images/logo.gif[/IMAGE] Текст Текст Текст Текст Текст [LINK]http://www.slang.ru/images/logo.gif[/LINK]Текст Текст

необходимо сделать так, чтобы при считывании этого файла строки с [H1]___[/H1] заносились в массив $zag_new[], а остальной текст в массив $text_new[], новости между собой разделяются <!--begin-->
Что-то я не могу сообразить с какой стороны подойти к этому вопросу...

Автор: IZ@TOP 25.3.2004, 08:19
Ну вот. Опять двадцать пять. Значит так, меняем формат немного:
Цитата

[H1]Первая новость[/H1]|Текст Текст Текст [IMAGE]http://www.slang.ru/images/logo.gif[/IMAGE] Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст [LINK]http://www.slang.ru/images/logo.gif[/LINK]Текст Текст
[H1]Первая новость[/H1]|Текст Текст Текст [IMAGE]http://www.slang.ru/images/logo.gif[/IMAGE] Текст Текст Текст Текст Текст [LINK]http://www.slang.ru/images/logo.gif[/LINK]Текст Текст


Делем так что данные идут в одну строку, строка - одна новость (классический вариант). Разделитель данных в строке знак "|" (можно любой другой/другие).
Обработка производится следующим образом:
Цитата

$l = file("news.base"); // Загоняем данные из файла в массив. Теперь у нас каждая ячейка массива - новость.
$i = 0;
while($i < sizeof($l); $i ++) {
    $ex = explode("|" , trim($l[$i])); // Разбиваем строку новости по разделителю.
    $zag_news = $ex[0]; // На выходе массив $ex с двумя индексами, в первом заголовок новости, во втором сама новость.
    $text_news = $ex[1];
    $i++;
}

Примечание: так же можно какое угодно количество разделителей использовать, то есть возможность добавить данные о дате новости и об авторе новости вполне реально.

Автор: Leksfor 25.3.2004, 13:17
Цитата
данные идут в одну строку, строка



Артур, я вроде помню, что в строку влезает 1024 байта текста. А если новость-то большая по объёму? Тогда путаница пойдёт. Хотя могу и ошибаться..

Автор: Secandr 25.3.2004, 16:47
В пхп и перле таких ограичений нет.

Автор: IZ@TOP 25.3.2004, 21:57
Leksfor , как сказал Secandr. Так что ты ошибаешься... а как ты думаешь как работают те новости которые для дискобзора писал?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)