|
|
|
| ...продолжая тему http://softtime.ru/forum/read.php?id_forum=1&id_theme=7350&page=1
<table style="font:11px Verdana,Arial,Helvetica;width:100%">
<tbody>
<tr><td width="100%" valign=top><br>
<table style="font:11px Verdana,Arial,Helvetica" bgcolor="#CCCCCC" cellspacing=1 cellpadding=4 width="90%" align=center>
<tbody>
<tr bgcolor="white">
<td align=center>Номер:</td>
<td align=center>Фамилия</td>
<td align=center>Имя:</td>
<td align=center>Паспорт (св-во о рождении):</td>
<td align=center>Город, страна:</td>
<td align=center>Дата рождения:</td>
<td align=center>Рейтинг:</td>
<td align=center>Организация, тренер</td>
<td align=center>Виза врача:</td>
<td></td></tr>
<tr bgcolor="white"><td>1</td>
<td>Иванов</td>
<td>Иван</td><td>4002123456</td>
<td>Питер, Россия</td>
<td>02/01/2005</td>
<td>111</td>
<td>ДЮСШ1</td>
<td>нет</td>
<form method=POST action="form_online.php?step=5"><td>
<input type=hidden name=number value='1'><input type=submit value="Изменить"></td></form></tr>
<tr bgcolor="white">
<td>2</td>
<td>Петров</td>
<td>Петр</td>
<td>4002123456</td>
<td>Питер, Россия</td>
<td>22/04/1983</td>
<td>122</td>
<td>ДЮСШ1</td>
<td>есть</td>
<form method=POST action="form_online.php?step=5"><td>
<input type=hidden name=number value='2'><input type=submit value="Изменить"></td></form></tr>
<tr bgcolor="white">
<td>3</td><td>Сидоров</td>
<td>Сидор</td><td>4002123456</td>
<td>Питер, Россия</td>
<td>21/03/1985</td>
<td>123</td>
<td>ДЮСШ1</td>
<td>нет</td>
<form method=POST action="form_online.php?step=5"><td>
<input type=hidden name=number value='3'><input type=submit value="Изменить"></td></form></tr>
<tr bgcolor="white">
<td colspan=3>Контактное лицо</td>
<td colspan=6>Самедов Артем Петрович</td>
<form method=POST action="form_online.php?step=5"><td>
<input type=hidden name=man value='contactable'><input type=submit value="Изменить"></td></form></tr>
<tr bgcolor="white">
<td colspan=3>Ответственное лицо</td>
<td colspan=6>Чемоданов Артем Арсеньевич</td>
<form method=POST action="form_online.php?step=5"><td>
<input type=hidden name=man value='responsible'><input type=submit value="Изменить"></td></form></tr>
</tbody>
</table>
<br></td>
</tr>
</tbody>
</table>
|
Это просто таблица. В предыдущей теме говорилось, что ее можно перевести в CSV-вид с помощью рег. выражений. | |
|
|
|
|
|
|
|
для: Dima1999
(14.09.2005 в 15:23)
| | Хм... а нет возможности сделать файл более формальным - т.е. чтобы число столбцов везде было одинаковым? Пока плохо получается вытащить данные
<?php
$content = file_get_contents("opr000JR.htm");
$pattern = "|<tr[^>]*>[^<]*<(td[^>]*>([^<]+)<[^<]*<[^>]*){1,2}|iU";
preg_match_all($pattern,$content,$out);
echo "<pre>";
print_r($out);
echo "</pre>";
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(14.09.2005 в 21:07)
| | > $content = file_get_contents("opr000JR.htm");
таблица пишется в PHP-файле и берется из БД (т.е. нет такого файла "opr000JR.htm")
> а нет возможности сделать файл более формальным - т.е. чтобы число столбцов везде было одинаковым?
Скорее всего нет. Точно =( | |
|
|
|
|
|
|
|
для: Dima1999
(14.09.2005 в 21:41)
| | Где все???!!!! | |
|
|
|
|
|
|
|
для: Dima1999
(16.09.2005 в 09:23)
| | Я сейчас убегаю не успеваю до ума довести скрипт - будем в два этапа резать сначала на массив подстрок, расположенных между <tr> и </tr>, а затем разбирать их
<?php
$content = file_get_contents("opr000JR.htm");
$str_begin = 0;
$str_end = 0;
while(true)
{
$str_begin = strpos($content, '<tr', $str_end);
if($str_begin == 0) break;
$str_end = strpos($content, '</tr', $str_begin);
$tr[] = substr($content, $str_begin, $str_end - $str_begin);
echo "$str_begin<br>";
echo "$str_end<br>";
}
echo "<pre>";
print_r($tr);
echo "</pre>";
?>
|
С регулярным выражением вечером продолжим. opr000JR.htm - это я просто для теста взял, потом вместо $content подставите значение из базы данных. | |
|
|
|
|
|
|
|
для: cheops
(16.09.2005 в 13:54)
| | Вот конечный вариант
<?php
$content = file_get_contents("opr000JR.htm");
$str_begin = 0;
$str_end = 0;
while(true)
{
$str_begin = strpos($content, '<tr', $str_end);
if($str_begin == 0) break;
$str_end = strpos($content, '</tr', $str_begin);
$tr[] = substr($content, $str_begin, $str_end - $str_begin);
}
foreach($tr as $line)
{
preg_match_all("|<td[^>]*>(.+)</td|iU",$line,$out);
$text = "";
foreach($out[1] as $value) $text .= $value.";";
$file[] = $text;
}
$content = implode("\r\n",$file);
echo $content;
?>
|
HTML-данные поступают в переменной $content и в результате содержимое CSV-файла также возвращается в виде переменной $content. | |
|
|
|
|
|
|
|
для: cheops
(16.09.2005 в 19:57)
| | А куда же делись хэдеры? | |
|
|
|
|
|
|
|
для: Dima1999
(16.09.2005 в 21:32)
| | Хм... так а вроде остались... я у себя в результате первой строкой наблюдаю
Номер:;Фамилия;Имя:;Паспорт (св-во о рождении):;Город, страна:;Дата рождения:;Рейтинг:;Организация, тренер;Виза врача:;
|
| |
|
|
|
|
|
|
|
для: cheops
(16.09.2005 в 21:48)
| | Нет, я имею в виду, что сперва было
<?
header(".....attachment......");
header(.......итд..................)
echo $text;
?>
| в результирующем файле, на который была ссылка. В новом коде этого ничего нет. Куда это вписывать? | |
|
|
|
|
|
|
|
для: Dima1999
(16.09.2005 в 21:55)
| | А заголовки следует поместить в самое начало
<?php
header(".....attachment......");
header(.......итд..................);
?>
|
а приведённый выше код следует поместить вместо оператора
| |
|
|
|
|
|
|
|
для: cheops
(16.09.2005 в 22:18)
| | Спасибо за все докиды. Завтра буду пробовать. | |
|
|
|
|
|
|
|
для: Dima1999
(17.09.2005 в 00:18)
| | Такие вопросы:
1) >opr000JR.htm - это я просто для теста взял, потом вместо $content подставите значение из базы данных.
Что значит подставлю вместо контент значение из БД? Не понял.
2) Если я добалю в таблицу несколько строк (тоже с колспанами), будет ли работать приведнный выше код? | |
|
|
|
|
|
|
|
для: Dima1999
(17.09.2005 в 09:30)
| | >Что значит подставлю вместо контент значение из БД? Не понял.
вместо opr000JR.htm пишите файл который вы хотите перевести в CSV формат | |
|
|
|
|
|
|
|
для: Dima1999
(17.09.2005 в 09:30)
| | 1) Как вы выводите HTML-файлы в браузер?
2) Да | |
|
|
|