Как можно убрать все <br />?

Poster

Новичок
Как можно убрать все <br />?

Ребята, нужно повырезать все теги <br /> из переменной, но только те которые содержатся в коде таблицы - например
<table cellspacing="0" cellpadding="2" border="0"><br />
<tr><br />
<td valign="top"><b>2 Бак </b></td><br />
<td valign="top">л/L</td><br />
<td valign="top">110</td><br />

<td valign="top">160</td><br />
<td valign="top">160</td><br />
<td valign="top">240</td><br />
<td valign="top">240</td><br />
</tr><br />
<tr><br />
</table>

А здесь еще <br /> может быть текст, <br /> но вот отсюда их резать уже не нужно.

то есть начиная от <table и до </table>

Подскажите - как?
 

Alexandre

PHPПенсионер
А) с помощью регулярных выражений
сам ими владею плохо... по этому и не подсказываю

В)
1- с помощью функций strpos() ищишь кусок текста, который начинается от <table и до </table>
2 - вырезаешь его функция substr()
3 - вырезаешь в нем все теги функциец strip_tags()
4 - вклеиваешь обратно свой кусок текста
5 - переходишь к п1 с последней поз.
.....
можно алгоритм оптимизировать...
 

predator2

Guest
Самый простой но "неправильный" вариант

$old = 0;
while ($old != strlen($st)){
$old = strlen($st);
$st = preg_replace('/(<table.*?>.*?)<br\\s*\\/>(.*?<\\/table>)/', "$1$2", $st);
}
 

Фанат

oncle terrible
Команда форума
может быть, "правильным" будет вариант с preg_replace_callback, которая матчит от <table и до </table>
а вызываемая функция делает, как раз, str_replace('<br />','',$table);
?
 

Demiurg

Guest
>Это не ХТМЛ это WML
ладно, откуда такой странный wml, откуда появились эти <br>
 

Alexandre

PHPПенсионер
Nirva не катит, сказанно же только в том месте где таблица

Варианта два:
либо реги

либо тот алгоритм, который я предложил. что использовать str_replace() или strip_tags() это без разницы

После внимательного изучения XHTML, я пришел к выводу, что можно еще использовать XSLT, но только в том случае, если весь код валидный. Так что есть третий вариант.
 

Poster

Новичок
нет, ребята, я неправильно объяснил наверное.

Взгляните:

Админка для заполнения новостей.
Текстареа.
Новость:
_________________
Сегодня мы открываем одно из наших перспективнейших направлений -
ловлю судака.

ТАБЛИЦА в виде
<table ...>
<tr>
<td>Здесь еще немного судака.</td>
</tr>
</table>

Судак вкусен как в жареном, так и в копчено-вяленом виде.

Мясо судака является источником витаминов, углеволов и прочей дребедени.
--------------

При выводе новости из таблицы прогоняем ее через nl2br и имеем <br /> в таблице.

Вот этого и нужно избежать.
 

Фанат

oncle terrible
Команда форума
Poster
вообще-то, к твоему сведению, задача автоматического оформления текста, уже содержащего HTML - весьма нетривиальная.
И я уверен, что ты снова прибежишь сюда, на этот форум за очередной заплаткой. Такие задачи надо решать глобально - псефдотегами, например.
 

Poster

Новичок
Фанат, ну какая же это будет "заплатка"? Я на этапе проектирования, и не знаю как поступать с форматированным текстом.
Какие-то соображения у меня есть.
Каких-то нет.

Поэтому есть вопросы ;)
 

Фанат

oncle terrible
Команда форума
я бы на твоем месте ввел единый псевдотег, и уже по нему разбивал текст на куски, то, что внутри - то не парсим, то, что снаружи - автоматом обрабатываем
 
Сверху