Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Explode
 
 автор: fiper   (02.11.2007 в 11:52)   письмо автору
 
 

Есть текстовая база. Если бы каждая новость соответствовала строке можно было бы сделать так


$a=file("baza.txt")
$count=count($a);
for($=0;$i<=$count;$i++) {
$con=explode("|",$a[$i])
echo $con[0].$con[1]; // и тд
}


но база содержит примерно такую структкру:

id|title|текст
текст

текстт
текс
текст
|id|title|текст

текст
текст
|

Как быть ?

   
 
 автор: kasmanaft   (02.11.2007 в 12:51)   письмо автору
 
   для: fiper   (02.11.2007 в 11:52)
 

Можно попробовать preg_split().
Расскажите подробнее о структуре этой базы..

id|title|текст - почему в начале нет | ?
|id|title|текст - тут есть...
| - а это что?

Что выступает в качестве id, title, текст?

   
 
 автор: fiper   (02.11.2007 в 12:58)   письмо автору
 
   для: kasmanaft   (02.11.2007 в 12:51)
 

Структура:

1| Заголовок| Много обычного текста
Много обычного текста

Много обычного текста

Много обычного текста
| 2|Заголовок| Много обычного текста


вот это | закрывает предыдущую новость

   
 
 автор: fiper   (02.11.2007 в 21:15)   письмо автору
 
   для: fiper   (02.11.2007 в 12:58)
 

Кто-нибудь поможет?

   
 
 автор: sim5   (02.11.2007 в 21:22)   письмо автору
 
   для: fiper   (02.11.2007 в 21:15)
 

А что нужно? Вывести:
1. Заголовок. Текст <br>
2. Заголовок. Текст <br>
....
или что?

   
 
 автор: fiper   (02.11.2007 в 21:33)   письмо автору
 
   для: sim5   (02.11.2007 в 21:22)
 

Да , так.

   
 
 автор: sim5   (02.11.2007 в 21:37)   письмо автору
 
   для: fiper   (02.11.2007 в 21:33)
 

Ну тогда достаточно в цикле проверять:

<?
if ($i == 0//то далее начинается новая строка вывода 

   
 
 автор: fiper   (02.11.2007 в 22:11)   письмо автору
 
   для: sim5   (02.11.2007 в 21:37)
 

Сделал вот так, но контент выводится не правильно



<?php
$a
=file("baza.txt");
$count=count($a);
for(
$i=0;$i<=$count;$i++){

list(
$id,$title,$con,$cat,$con2,$con3,$sub_cat,$sklad,$zakaz,$content)=explode("|",$a[$i]);
echo 
"<table width=400 style='background-color: #f5f5f5;height:30px;'><td>$title</td><tr><td>$content</td></table>";

if(
$i 10==0) echo '<br>';

}
?>


Как узнать , что 10 переменных, вытащенные из explode, это одна новость, дальше вторая, третья и тд.

Последняя переменная $content содержит много строк

   
 
 автор: sim5   (02.11.2007 в 22:24)   письмо автору
 
   для: fiper   (02.11.2007 в 22:11)
 

Проверьте, что у вас за массив после file() получается, потому как по модулю 10 все должно быть нормально.

   
 
 автор: fiper   (02.11.2007 в 23:24)   письмо автору
 
   для: sim5   (02.11.2007 в 22:24)
 

Я дико извиняюсь. БАЗА оказалось кривой(смещённой), и на самом деле каждая новость это одна строка.Ещё раз прошу прощения,теперь всё ок. Спасибо за помощь!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования