Регулярное выражение для цитат.

programmer_2006

Новичок
Регулярное выражение для цитат.

С регулярками работаю крайне редко. И возникла трабла.
Есть текст например такой:

PHP:
[quote][quote]Цитатаааааааааааааааааааааа[/quote]e rtert ert ert ert ert [/quote] wer werwerewewr ewre ewr wer ewwe wer we wre ewr ewr
Необходимо все вхождения
PHP:
[quote] и [/quote]
заменить на
PHP:
<blockquote> и </blockquote>
Написал регулярку
PHP:
'/\[quote\](.+)\[\/quote\]/i
Но внутренние цитати не заменяются как исправить. Заранее спасибою
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
:confused:
[m]str_replace[/m] - не фонтан?
 

programmer_2006

Новичок
использую
$content = preg_replace('/\[quote\](.+)\[\/quote\]/i', "<blockquote><b>Цитата</b><br />\$1</blockquote>", $text);

-~{}~ 19.05.09 16:43:

что не понимаю как мою задачку можно решить простым реплайсом.
 

dimagolov

Новичок
str_replace('[quote\]', '<blockquote><b>Цитата</b><br />', $text);
str_replace('[/quote\]', '</blockquote>', $text);

п.с. слеш перед ] чтобы форум не дурил
 

programmer_2006

Новичок
Ну это как то не очень красиво. Хотя явно проще и быстрее чем рекурсивная регулярка. Спасибо, взглянул на задачу с другого угла и все стало проще.
 

Духовность™

Продвинутый новичок
мне одному кажется, что замена BB-тегов с помощью str_replace - извращение? И возможность дать пользователю загадить всю верстку?

programmer_2006
Пользователь tashkentchi написал хороший парсер bb кода на основе конечных автоматов (что, собственно, правильно в данном случае).

используй его.
 

programmer_2006

Новичок
Спасибо смотрел на тот парсер. Но в моем случае нужен всего один тэг, все остальное я фильтрую. А для одного тэга str_replace вроде подходит.

-~{}~ 19.05.09 17:33:

Хотя я бы с большим удовольствием использовал бы регулярку. Дело в том, что при нажатии кнопки "Цитировать" у меня страница не перегружается, я javascript - ом выдираю текст обратно преобразую все <blockquote> в
и вставляю в текстарию. Сейчас с этим траблы если пытаюсь использовать реплайс в javascript.
 

Духовность™

Продвинутый новичок
обратно преобразую все <blockquote> в [quote*]
че? ты html выдираешь чтоли? откуда тег blockquote берется в текстовой области?


Но в моем случае нужен всего один тэг
а что будет, если я приду и напишу тебе в комментарий несколько незакрытых тегов quote?
 

dimagolov

Новичок
triumvirat, ИМХО валидация BB кодов это совсем другая история. тут автора надо спросить, как он хранит сообщения - с BB кодами, с html или и так и так. Я бы хранил и так и так и при модификации валидировал бы и строил html конечным автоматом, не делая лишних телодвижений при обычном отображении.
 

programmer_2006

Новичок
Если не закрыть некоторые то, некоторые элементы становятся пустыми. Я понимаю, что это проблема. Но тот парсер написан на пхп, а мне еще нужен подобный на javascript (для вставки данных в текстарию). У меня простая система сообщений по виду все похоже на просмотр письма в gmail. Раньше я там добавлял ">" и при цитировании(ответе) тянул данные с сервака аяксом и на серваке преобразовывалось. Все было классно и работало хорошо. Но напрягли сделать по другому вот и мучаюсь :)
 

weregod

unserializer
портируйте на JS, сначала сложность портирования доходчиво объясните напрягатору
 
Сверху