Необычной CSV отображение :(

Sir-J

Новичок
Необычной CSV отображение :(

Здравствуйте!
Передо мной стоит такая задача:
имеем в наличии файл file.csv.
Формат записи такой:

1;Привет;100 рублей;
2;Середина;10 рублей;
3;Ваще в конец;1 рубль;
4;товарец; 10 у.е.;
4;товарец; 5 у.е.;
4;товарец; 3 у.е.;
и.т.д., пошло по новой, начиная с цифры 1.

Есть вот такой скрипт.

PHP:
<? $fop = fopen ("file.csv", "r+");
while (!feof($fop))
{
$read = fgets($fop, 1000);
list($numb,$name,$price,$link,$endlink) = split(';',$read);
echo "Строка <b>$numb</b>. Вторая строка: <b>$link$name$endlink</b>. Цена $price<br>";
}
fclose($fop);
?>

Вроде бы все ничего, да вот надо возможности шире.
Сейчас объясню формат записи файла file.csv:
1;Привет;100 рублей;<a href=test.php>;</a>
1 - это цифра :) (но не номер строки!!!)
Привет - название раздела
100 рублей - цена :)

Вот можно ли так подредактировать скрипт чтобы
он понимал такие дествия, перевожу дословно:
если первая цифра "1" (в начале строки), то отображать
текст "Привет" (второй после разделителя) вот так: <b>Привет</b>
если цифра "2" (в начале строки), то отображать текст (в нашем случае "Середина")
вот так <u>Середина</u>
если цифра "3" (в начале строки), то отображать текст (в нашем случае "Ваще в конец")
к примеру просто так "Ваще в конец".
если цифра "4", то создавать таблице следующим образом:
у нас в наличии 3 подряд идущих записей:
4;товарец; 10 у.е.;
4;товарец; 5 у.е.;
4;товарец; 3 у.е.;
Отображать хотелось-бы так:
<table>
<tr><td>товарец</td><td>10 у.е.</td></tr>
<tr><td>товарец</td><td>5 у.е.</td></tr>
<tr><td>товарец</td><td>3 у.е.</td></tr>
</table>
и дальше по-новой.
Т.е. из одного csv (txt) файла у нас будет появляться древовидное отображение, так сказать.
Возможно ли такое на пхп.
Прошу помочь.
 

Sir-J

Новичок
Спасибо, да уже домозговал сам.
Вот что я придумал:
PHP:
<? $fop = fopen ("file.csv", "r");
while (!feof($fop))
{
$read = fgets($fop, 100);
list($numb,$name,$price,$link,$endlink) = split(';',$read);

if ($numb == 1)
echo "<b>$link$name$endlink</b>. Цена: $price<br>";
if ($numb == 2)
echo "<u>$link$name$endlink</u>. Цена: $price<br>";
if ($numb == 3)
echo "$link$name$endlink. Цена: $price<br>";
if ($numb == 4)
echo "<font size=1>$link$name$endlink. Цена: $price</font><br>";
}
fclose($fop);
?>
Отлично!
Только вот немнжко не пойму, почему из файла не отображает первые 3 строчки???
т.е. файл file.csv мне приходиться опускать ровно на 3 строки вниз...
Почему так?
И, кстати, при компилировании из XML там идет формат ANSI (вроде),
который неправильно отображает русские буквы через PHP.
Я конечно вручную через Блокнот изменяю на UTF-8 и все работает, но не смогу же я этого вечно делать!
Много перечитал, тока так ничего и не понял.
Спасибо.

-~{}~ 03.03.05 02:41:

Объясню свою проблему:
Сохраняю неотформатированный текст через Exel,
где разделитель - точка с запятой :)
PHP выдает такой текст:

&#1008;&#34981;&#55906;&#57020;/b>. Цена: 555
&#883;, &#31024;&#2225;&#55883;&#56553; &#19376;&#59630;&#38948;&#55438;&#56572;/b>. Цена: 987
&#219;&#1755;. Цена: 444
&#55930;&#56480;&#55383;&#56750; Цена: 333
&#55930;&#56480;&#55383;&#56750; Цена: 911
&#55930;&#56480;&#55383;&#56736;333. Цена: 133
&#1008;&#34981;&#55906;&#57020;/b>. Цена: 555
&#883;, &#31024;&#2225;&#55883;&#56553; &#19376;&#59630;&#38948;&#55438;&#56572;/b>. Цена: 987
&#55930;&#56480;&#55383;&#56736;333. Цена: 133
&#24165; &#59693;&#60320;Цена: 444

Отображает (по порядку) правильно,
но непонятные символы вначале строк.
В Блокноте передлываю в формат UTF-8, все работает,
но для правильного отображения строк нужно снизить в файле на 3 строки вних.
Да еще и EXEL не может работать с такой кодировкой.
Получается замкнутый круг :(
 
Сверху