TXT (или csv) в HTML-таблицу

Статус
В этой теме нельзя размещать новые ответы.

Olimp

Постоялец
Регистрация
31 Янв 2007
Сообщения
50
Реакции
10
Есть текстовый файл:
Код:
1; ; ;RUSSIA ;RUS; ; ; ; 60; ;BTRUS2 ;;; 2; ; ;NORWAY ;NOR; ; ; ; 54; ;BTNOR2 ;;; 3; ; ;FRANCE ;FRA; ; ; ; 48; ;BTFRA2 ;;;
и так далее, все в одну строку

Нужно средствами php на основе этих данных создать таблицу в html типа:
1 RUSSIA 60
2 NORWAY 54
3 FRANCE 48

Решение 1 при помощи fgetcsv()

Нашел в сети такой примерчик:
PHP:
<?php
$row = 1;
$handle = fopen("test.txt", "r");
echo "<table border=2 cellspacing=2 cellpadding=2>";

while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
   $num = count($data);
   $i=1;$s="";
   echo "\n <tr>";
   $row++;$cs=0;  $tx="";$l=0;
for ($c=0; $c < $num; $c++) {
if ($data[$c]<>"")    { $cs=0; $s=$data[$c];    do {$cs++;    $j=$cs+$c;} while (($data[$j]=="") and ($j<$num));} else continue;
if ($cs==1)  echo "<td> $s ";
  elseif ($cs==$num) echo "<th colspan=$cs align=center bgcolor='#ffe0e0'> $s";
  else echo "<td colspan=$cs align=left> $s";
}
}
echo "</table>";
fclose($handle);
?>
Недостатки:
1. Строки должны отделятся переносом строки в исходном файле
2. Необходимо удалить столбец с данными BT???2

Решение 2 - работа с потоком.
Сначала выводим:
HTML:
<table>
	<tr>
		<td>
Затем в потоке (файле txt:(
Код:
1; ; ;RUSSIA ;RUS; ; ; ; 60; ;BTRUS2 ;;;
заменяем:
HTML:
1</td><td>RUSSIA</td><td>60</td></tr><tr><td>
и в конце закрыть </td></tr></table>

Первый вариант мне кажется более перспективным.
Может кто-нибудь помочь?
 
preg_match_all , а потом уж делай че хочешь с массивом...
 
как вариант
PHP:
$txt = file_get_contents("test.txt"); 
echo "<table>";
foreach(explode(";;;",$txt) as $v){
	if (!empty($v)){
		echo "<tr>";
		$line=explode(";",$v);
		array_map("trim",$line);
		echo "<td>{$line[0]}</td><td>{$line[3]}</td><td>{$line[8]}</td> \n";
		echo "</tr>";
	}
}
echo "</table>";
 
Поддерживаю a_n_d_y, удобней всего будет сделать через preg_match_all().
 
Дело в том, что там не чистый csv :((
вариант zetar - работает, но немного кривовато (для моих целей).
zetar, отписал в личку, может захотите доработать..

Добавлено через 11 минут
Извиняюсь, набрал и не отправил...

теперь отправил

Дело в том, что там не чистый csv :((
вариант zetar - работает, но немного кривовато (для моих целей).
zetar, отписал в личку, может захотите доработать..


в личке пусто
 
я отправил файлы, Olimp получил ??
 
Все. Вопрос решился. Тему можно закрывать!
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху