Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: bb code цитата
 
 автор: Eric-S   (21.12.2006 в 07:40)   письмо автору
 
 

Здравствуйте!

Помогите пожалуйста правильно составить выражение. Я как минимум сделал 3 ошибки.
// оформление цитат
// $s1 = preg_replace('/\[(cite)(\sauthor=(.+?))?(\sdate=(.+?))?\](.+?)\[\/\1\]/', '<blockquote>цитата : \3<br>\6</blockquote>', $s1);


1. нужно захватывать весь текст между тегами, даже если он разбит на строчки (*) не помогло.
2. не знаю как разрешить свободный порядок параметров или их отсутствие. Пока жестко author=... date=...
3. и как разрешить заключать значения параметра в кавычки.

Заранее благодарен.

   
 
 автор: cheops   (21.12.2006 в 13:12)   письмо автору
 
   для: Eric-S   (21.12.2006 в 07:40)
 

А оригинальный текст, в котором производится замена какой?

   
 
 автор: Eric-S   (25.12.2006 в 12:05)   письмо автору
 
   для: cheops   (21.12.2006 в 13:12)
 

Чем-то сходная задача сдесь же
http://www.softtime.ru/forum/read.php?id_forum=6&id_theme=7702&page=3

Этот же мой вопрос также
http://rusfaq.ru?Step=info&Action=Question&ID=68330

Я начинающий, в regexp, и в некоторые фишки плохо везжаю.
например зачем выражение ограничивать знаками "/", "#", "|".

// Оригинальный текст (для обработки примерно такой)
$s1 = "[quote]бла бла бла[/quote] [quote] тра ля ля[/quote]и ещё текст";


Отличается от начального вопроса, я переделал с cite на quote, так привычнее!

Вот такой у меня код:
// оформление цитат
$s1 = preg_replace('/\[(quote|cite)(\sauthor=(.+?))?(\sdate=(.+?))?(\spost=(.+))?\](.+)\[\/\1\]/is', '<blockquote>цитата: \3<br>\8</blockquote>', $s1);

В простых случаях ведёт себя нормально, но когда 2 или более цитат, глючит.

Из первого текста делает:
$s1 = "<blockquote>бла бла бла[/quote] [quote] тра ля ля</blockquote>"
Я предполагаю, что дело в жадности, но и только. Что делать не знаю.

p.s. Вообще не люблю форумы, и тут облажался. Думал придёт оповещение на мыло. Заглянул случайно, а тут ответ! Если не затруднит ответте пожалуйста на eric-s@mail.ru.
Хотя я на всякий случай постараюсь сюда заглядывать.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования