![]() |
|
Модераторы: Aliance, skyboy, MoLeX, ksnk |
![]()
|
|
| kvv |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 4.5.2006 Репутация: нет Всего: нет |
Текст отпарсится так: <b><i>так</b></i>. Для обычного браузера еще ничего, но в во флеше это криво воспримется - последующий текст будет жирным. Как это можно исправить? |
|||
|
||||
| IvanB |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 155 Регистрация: 23.5.2005 Где: Irkutsk Репутация: нет Всего: 5 |
У тебя что написано?
Ты
У тебя в строке такого нет. $txt которая. Это сообщение отредактировал(а) IvanB - 4.5.2006, 16:13 --------------------
Закон отладки: Каждая последняя ошибка является предпоследней. |
||||
|
|||||
| kvv |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 4.5.2006 Репутация: нет Всего: нет |
Описка.
|
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 16 Всего: 261 |
Я вообще по другому делал...
Глянул, делал вообще не оптимально... Я бы тут сейчас сделал бы так:
|
|||
|
||||
| S.A.P. |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2664 Регистрация: 11.6.2004 Репутация: нет Всего: 71 |
Mal Hack, а как быть со вложенными тегами?
|
|||
|
||||
| Replicator |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 30.4.2006 Где: Outer Heaven Репутация: нет Всего: нет |
Прогнать регулярку несколько раз. Я у себя дважды это делаю, хотя можно это делать в цикле, пока все не заменишь.
P.S. MalHack, спасибо за код. А то у меня гораздо длиннее выражение, да и помедленней. --------------------
|
|||
|
||||
| S.A.P. |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2664 Регистрация: 11.6.2004 Репутация: нет Всего: 71 |
||||
|
||||
| R.M. |
|
|||
![]() Анархист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2164 Регистрация: 8.6.2005 Где: Питер Репутация: нет Всего: 30 |
S.A.P., можно проверить соответствие строк если заменённая равна той которая была до этого прекращать цикл
-------------------- Помнишь как бодрили дискотеки прошлого века? Теперь стул, компьютер и нету человека. Nokia LifeStyle - Всё для смартфонов Nokia |
|||
|
||||
| Mal Hack |
|
||||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 16 Всего: 261 |
А для чего я там модификатор e поставил? Ну тут вообще тогда надо бы делать через preg_replace_callback, в принципе это лучше с той стороны, что в плане кодинга интеитивнее понятнее и есть больше шансов на дальнейшее улучшение. |
||||
|
|||||
| kvv |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 4.5.2006 Репутация: нет Всего: нет |
Warning: Compilation failed: reference to non-existent subpattern at offset 8 in c:\program files\apache group\apache\htdocs\test.php on line 5 |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 16 Всего: 261 |
Отладь сам. |
|||
|
||||
| kvv |
|
||||||||||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 4.5.2006 Репутация: нет Всего: нет |
Не очень силен в регах. Поясните пожалуста:
Если этот модификатор установлен, функция делает нормальную замену обратных ссылок в скроке замены, выполняет это как пхп код, и использует результ для замены в поисковой строке. Как это понять? Еще не пойму смысла знака # в начала и в конце. В хелпе написано только это:
Но у нас PCRE_EXTENDED не установлен. Да и зачем закомменчивать всю строку? Вот, что у меня получилось(убрал #, заэкранил \):
Выдает:
Но замена-то сделана по-одному разу, а если использовать квантификатор e, то выдает это:
Это сообщение отредактировал(а) kvv - 6.5.2006, 06:39 |
||||||||||
|
|||||||||||
| S.A.P. |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2664 Регистрация: 11.6.2004 Репутация: нет Всего: 71 |
это далеко не оптимальное решение kvv, может быть Mal Hack, имел ввиду вот это:
но у меня есть подозрения, что код будет медленно работать... |
||||
|
|||||
| kvv |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 4.5.2006 Репутация: нет Всего: нет |
Ну хотя-бы работает. Всем спасибо.
|
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 16 Всего: 261 |
Вообще-то я несколько другое имел ввиду... Реги сами поддерживают рекурсивный проход, но вот синтаксис точно не помню. К примеру при таком варианте не прокатит вот это: Не должно по крайней мере.
|
|||
|
||||
| S.A.P. |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2664 Регистрация: 11.6.2004 Репутация: нет Всего: 71 |
это я привел для примера. Для рабочего решения это явно не катит, т.к. существует проблема с кавычками. С рекурсивными регами у меня ничего не вышло (может при замене они не работают?).
Если собираешься использовать ручную рекурсию, то советую разобраться и переделать код на preg_replace_callback. Это сообщение отредактировал(а) S.A.P. - 7.5.2006, 16:11 |
|||
|
||||
| kvv |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 4.5.2006 Репутация: нет Всего: нет |
Не пойму вас.
Мне тот вариант понравился. Вроде все работает. Смысла в preg_replace_callback() не увидел, ведь это тоже самое получается... Может, я что-то там не понимаю?
Это сообщение отредактировал(а) kvv - 7.5.2006, 16:46 |
||||
|
|||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 16 Всего: 261 |
Хм... Что-то через рекурсию внутри шаблонов у меня не получилось. Сделал вот так:
|
|||
|
||||
| kvv |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 4.5.2006 Репутация: нет Всего: нет |
Эм... непонял. Мы берем тег в квадратных скобках, в BBCode() он оказывается в переменной $str - и потом в нем мы опять ищем рег?
Выдает:
Ну так и есть... Получились теги в тегах%) |
||||
|
|||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 16 Всего: 261 |
||||
|
||||
| kvv |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 4.5.2006 Репутация: нет Всего: нет |
||||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 16 Всего: 261 |
|
|||
|
||||
| kvv |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 4.5.2006 Репутация: нет Всего: нет |
Mal Hack,
Мы друг друга не понимаем%) Уже ж все получилось - чего еще париться то? Предлагаешь ты все ту же рекурсию - скорость парсинга не увеличивается. Да и что-то ты не то в последнем коде делаешь... Третья переменная в функцию не передается, а ты ее иссетом проверяешь... И выводит он совем не то. |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 16 Всего: 261 |
Тогда не понимаю в чем проблема?
Вот подправленный:
|
|||
|
||||
| BobiKK |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 655 Регистрация: 1.12.2005 Где: Essen, Deutschlan d Репутация: нет Всего: 16 |
Кстати, а это никто не пробовал? http://pear.php.net/package/HTML_BBCodeParser
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Тексты | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |