Массив и таблица. Нужна помощь в php

12
F
На сайте с 06.02.2012
Offline
124
797

Имеется таблица html.

Код написан так, что каждая ячейка - одна строка html

типа так:

<tr>

<td width:146pt'>XU-бла бла</td>

<td>&nbsp;</td>

<td>бла бла бла</td>

<td>&nbsp;</td>

<td >&nbsp;</td>

<td>&nbsp;</td>

<td>&nbsp;</td>

<td>&nbsp;</td>

<td>бла бла бла бла</td>

</tr>

Нужно средствами php для индексации переделать текст html чтоб одна строка таблицы была в одной строке html

Вот так:

<tr><td width:146pt'>XU-бла бла</td><td>&nbsp;</td><td>бла бла бла</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>бла бла бла бла</td></tr>

Я понимаю так. Положить рядом два блокнотика. В одном исходный текст, считываем и обрабатываем массив и записываем в другой блокнотик.

Но торможу... в php совсем слаб...

<?php


$file ="./tab.txt";
$fd = fopen ($file, "r");
$contents = fread ($fd, filesize ($file));
Fclose ($fd);

///$contents=explode ("</tr>", $contents);
//$contents=implode ("</tr>", $contents);

$indexfile = "./tab1.txt";
$fp = fopen($indexfile, "a+");
fwrite($fp, $contents);
fclose($fp);
echo 'Текст переписан';

?>


---------- Добавлено 11.06.2013 в 08:53 ----------

Вручную переделать нереально. Около тридцати таблиц, в среднем каждая содержит около 500 строк по 10 ячеек.
izbushka
На сайте с 08.06.2007
Offline
110
#1

Предлагаю сначала убрать все разрывы строк в файле, потом добавить их после </tr>:

tr -d '\n' < file.html |sed 's|</tr>|</tr>\n|'>newfile.html

Или, если хочется именно на php, то алгоритм такойже

fordzon:
Нужно средствами php для индексации переделать текст

Для какой индексации? Вы уверены что оно вам надо? :)

F
На сайте с 06.02.2012
Offline
124
#2
izbushka:
Для какой индексации? Вы уверены что оно вам надо?

Надо для внутреннего поиска на сайте. Чтоб любое совпадение в любой ячейке выводило всю строку. Чтоб не копаться потом во всей таблице. Вся необходимая инфа уместится в строке.

Сайт небольшой. Поиск организован на PHP с предварительной индексацией всех страниц.

---------- Добавлено 11.06.2013 в 11:19 ----------

izbushka:
если хочется именно на php, то алгоритм такойже

Плохо понял. Если не трудно, не могли бы добавить в мой скрипт эту процедуру.

ukrdev
На сайте с 15.11.2011
Offline
31
#3


// берем контент
$content = file_get_contents('tab.txt');
// убираем \n (new line) после всех тегов </td> или <tr>
$content = preg_replace("#(</td>|<tr>)\n#i", '$1', $content);
// записываем изменения в новый файл
file_put_contents('tab1.txt', $content);
F
На сайте с 06.02.2012
Offline
124
#4
ukrdev:
*записываем*изменения*в*новый*файл

Попробовал.

Но записалось всё так как и было... Никаких изменений не вижу.

Может у меня в XAMPP \n некорректно работает...

В выводе информации приходилось заменять его на <br>, ибо не переносил строку.

Попробую на сервере...

ukrdev
На сайте с 15.11.2011
Offline
31
#5

А в $content что? preg_replace отрабатывает?

F
На сайте с 06.02.2012
Offline
124
#6

Ура!!! На сервере всё работает!!!

Спасибо!!!

F
На сайте с 06.02.2012
Offline
124
#7

Ещё нужна помощь.

Нашёл нужные шаблоны и убрал лишние пробелы, теги и атрибуты.

Но в одном моменте торможу.

В ячейках, внутри тегов <td> встречаются переносы строк.

Типо так:

<td> блабла

бла бла

</td>

Как убрать эти переносы строк внутри ячеек?

F
На сайте с 06.02.2012
Offline
124
#8

Попробовал по другому принципу.

//Удаляю все переносы на странице.
$content=str_replace ("\n", ' ', $content);
//Вставляю переносы после конца каждой строки
$content = preg_replace("!</tr>(.*?)<tr>!si", "</tr>\n<tr>", $content);

Но здесь надо вручную поправить контент, который не в таблице, ещё шапку и футер. Муторно немного.

Вопрос: можно ли убрать переносы только внутри тегов <table>...</table> ?

IL
На сайте с 20.04.2007
Offline
435
#9
fordzon:
Вопрос: можно ли убрать переносы только внутри тегов <table>...</table> ?

Можно.....

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
F
На сайте с 06.02.2012
Offline
124
#10

А как это сделать?

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий