|
|
|
| Здравствуйте!
Помогите пожалуйста правильно составить выражение. Я как минимум сделал 3 ошибки.
// оформление цитат
// $s1 = preg_replace('/\[(cite)(\sauthor=(.+?))?(\sdate=(.+?))?\](.+?)\[\/\1\]/', '<blockquote>цитата : \3<br>\6</blockquote>', $s1);
1. нужно захватывать весь текст между тегами, даже если он разбит на строчки (*) не помогло.
2. не знаю как разрешить свободный порядок параметров или их отсутствие. Пока жестко author=... date=...
3. и как разрешить заключать значения параметра в кавычки.
Заранее благодарен. | |
|
|
|
|
|
|
|
для: Eric-S
(21.12.2006 в 07:40)
| | А оригинальный текст, в котором производится замена какой? | |
|
|
|
|
|
|
|
для: 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.
Хотя я на всякий случай постараюсь сюда заглядывать. | |
|
|
|