ИЩУ : Конвертор HTML таблиц в CSV или в MySQL сразу

Fay

Guest
ИЩУ : Конвертор HTML таблиц в CSV или в MySQL сразу

Столкнулся с такой задачей.

Надо с сайта взать html код с таблицей и внести данные в MySQL таблицу сохраняя структуру таблицы.

Скольок я не искал, а так и не нашол вообще конвертора на ПХП типа html2csv
нашол только csv2mysql

Я сам не мастер п пхп и очень мало знаю :(

приведите пример, если есть оный... думаю там не сложно.. но в этиъ рег. выражениях я запутался совсем... :(

-~{}~ 10.07.05 04:11:

Вид таблици такой:

PHP:
<table width="100%" border=0 cellpadding="0" cellspacing="1">
                  <tr>
                    <td width="40%" height="19" align="center" background="1.jpg" class="white">КОЛОНКА1</td>
                    <td width="20%" background="1.jpg" class="white" align="center">КОЛОНКА2</td>
                    <td width="20%" background="1.jpg" class="white" align="center">КОЛОНКА3</td>
                    <td width="20%" background="1.jpg" class="white" align="center">КОЛОНКА4</td>
                  </tr>
                  <tr><td class=base4>ИМЯ1</td><td class=base5>ПОЛ1</td><td class=base5>НАЦИОНАЛЬНОСТЬ1</td><td class=base5>ГОРОД1</td></tr><tr><td class=base4>ИМЯ2</td><td class=base5>ПОЛ2</td><td class=base5>НАЦИОНАЛЬНОСТЬ2</td><td class=base5>ГОРОД2</td></tr>
-~{}~ 10.07.05 04:13:

сори за опечатка писалось под утро :)
 

DarkMonk

Guest
Re: ИЩУ : Конвертор HTML таблиц в CSV или в MySQL сразу

Мне кажется, если структура таблицы постоянная, то можно воспользоваться функцией fopen();.
Загнать всё в массив, а далее работать уже с ним.
Примерно так:
PHP:
$start=0; //Начало таблицы
$finish=0; // Конец таблицы
$for_a=0; // Номер строки
$b=0; //Стоп кран

$page = fopen ("http://www.site.ru/page.html", "r"); 


for ($a=0; $b!=2; $for_a++)
{
	$line = fgets ($page, $for_a);

/* Ищем начало таблицы */	
if (eregi ("<table width=\"100%\" border=0 cellpadding=\"0\" cellspacing=\"1\">", $line))
{
	$start=$for_a;
	$b=1;
}

/* Допустим надо распечатать убрав ненужное */

	if($b==1)
	{
		$text1 = ereg_replace ("<td width=\"40%\" height=\"19\" align=\"center\" background=\"1.jpg\" class=\"white\">", "", $line);
		$text1 = ereg_replace ("</td>", "", $text1);
		...
		echo $text1;
	
	}
	
	if(eregi ("</table>", $line)
	{
		$finish=$for_a;
		$b=2;
	}
}
Но это только теория, я не знаток PHP...
 

SelenIT

IT-лунатик :)
Пример дык пример, конвернтера дык конвертера...
PHP:
$text = file_get_contents($url_to_stole_which_itself_of_course_is_prohibited);
// некие манипуляции с $text, в итоге которых получается пример из первого поста
mysql_query ('INSERT INTO table VALUES ' . substr( preg_replace ('~.*?<tr><td class=base4>(.*?)</td><td class=base5>(.*?)</td><td class=base5>(.*?)</td><td class=base5>(.*?)</td></tr>.*?~ise', "\"('\" . mysql_real_escape_string('\\1') . \"','\" . mysql_real_escape_string('\\2') . \"','\" . mysql_real_escape_string('\\3') . \"','\" . mysql_real_escape_string('\\4') . \"'),\"", $text) , 0, -1));
Но вот пояснять решение для задачи, запрещенной правилами форума, я пожалуй не стану. Тем более что все 5 использованных ф-ций неплохо документированы в мануале.
 

Fay

Guest
всем биг сенькс!

сделал с помощью preg_replace
 
Сверху