![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Staind |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 17.12.2007 Где: Планета сокровищ Репутация: 2 Всего: 3 |
Есть проверка на тэги bbcode.
Вот так реализовано:
Но если я введу строку так (скобки - это означает что символы находятся в bbcode): "(вцфв)цфвццвффу(пкырк)", то у меня закрашивается жирным вся строка "(вцфвцфвццвффупкырк)" после обработки. Незнаю почему так. Конечно здесь скорее всего в выражении проблема. Люди добрые подскажи как этого избежать? --------------------
Ничто так не раздражает человека, как просьба успокоиться |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
я вообще удивляюсь, что данній код что-то обрабатывает. вообще-то, у preg_replace первым параметром идет - что искать, а уже вторым - на что заменять. у тебя же - наоборот...
|
|||
|
||||
| flashaa |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: 19 Всего: 25 |
Во-первых, первый и второй параметр поменять местами.
Во-вторых при чем здесь bbcode? Вычленяются строки между вот такими слешами "\" (включительно) и заменяются на внутренность слешей. А (?i) - для понта? К сведенью, эти символы включают режим регистронезависимости после них. Это сообщение отредактировал(а) flashaa - 10.3.2008, 23:30 |
|||
|
||||
| Staind |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 17.12.2007 Где: Планета сокровищ Репутация: 2 Всего: 3 |
2skyboy, да, я его случайно написал на форум неправильно. В самом коде в плане расстановки норм.
А как чтобы нормально было?) --------------------
Ничто так не раздражает человека, как просьба успокоиться |
|||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 32 Всего: 401 |
Staind, что-то я не понял, у тебя BB-коды выделяются круглыми скобками, а не квадратными, как обычно?
Прикол с (?i) тоже не понял... может, имелось в виду незахватывающее совпадение (?:что-то)? Приведи пример реальных исходных данных, и что должно получиться после обработки. А то описание проблемы как-то сумбурно выглядит... -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| flashaa |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: 19 Всего: 25 |
Staind, обычно bbcode это нечто, похожее на тег, но в квадратных скобках.
Поскольку теги сильно отличаются по смыслу, то универсальный вычленитель должен работать через вызовы callback-функций.
Здесь находятся теги типа b.../b, i../i и им подобные. После того, как строки находятся, из забирается имя тега (для моих примеров это "B, "I") и содержимое тега (то, что между и ). Эти 2 величины передаются в функцию bbcode_replace_callback, которую надо написать самому. Ф-ция может выглядеть примерно так:
Это сообщение отредактировал(а) flashaa - 11.3.2008, 10:50 |
||||
|
|||||
| Staind |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 17.12.2007 Где: Планета сокровищ Репутация: 2 Всего: 3 |
2flashaa, спасибо, буду пробовать. Честно говоря даже и не знал что нужно создавать пользовательскую функцию. У Вас очень грамматно написано^^
2SelenIT, я понял что в квадратных. На форуме не смог написать примеры с квадратными скобками, поэтому, прежде чем писал код написал "скобки - это означает что символы находятся в bbcode" Модификатор (?i) поставил затем, чтобы были регистронезависемые b,i,u... Это сообщение отредактировал(а) Staind - 11.3.2008, 14:28 --------------------
Ничто так не раздражает человека, как просьба успокоиться |
|||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 32 Всего: 401 |
Ух ты, надо же, сколько лет пользуюсь регами - не знал про установку внутренних опций -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| flashaa |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: 19 Всего: 25 |
SelenIT, но все равно какой смысл туда его ставить? Такие штуки ставятся, когда часть регулярки работает по одним правилам, другая часть - по другим. В данном случае это просто модификатор /i.
По поводу тегов - сейчас заметил, что в моем посте половина пропала, форум съел ) Теперь понятно, почему в первом посте через скобки. Staind, потестил код на нескольких примерах, вроде работает. Хотя возможны скрытые баги.
Выводит:
Это сообщение отредактировал(а) flashaa - 11.3.2008, 14:52 |
||||
|
|||||
| Staind |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 17.12.2007 Где: Планета сокровищ Репутация: 2 Всего: 3 |
2flashaa, спасибо большое, все получилось
--------------------
Ничто так не раздражает человека, как просьба успокоиться |
|||
|
||||
| Staind |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 17.12.2007 Где: Планета сокровищ Репутация: 2 Всего: 3 |
Ув. люди, еще мелкий вопрос:
Я тут подумал, а в самой MySQL базе как хранить информацию? Хранить в реальных тэгах или в bbcode тэгах? У меня сейчас сделано так: После редактирования я все bbcode тэги перевожу на html тэги. А думаю сделать так: После редактирования сохраняются все bbcode Тэги как есть и при отображении информации они уже меняются на html тэги. Как лучше? Я просто посмотрел исходники phpBB3 и у них там по идее сохраняется как есть а уже при отображении идет перевод в html тэги. И так же хотел спросить - А много ли будет кушать ресурсов, если при отображении заменять?))) Это сообщение отредактировал(а) Staind - 11.3.2008, 19:35 --------------------
Ничто так не раздражает человека, как просьба успокоиться |
|||
|
||||
| Sanchezzz |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1670 Регистрация: 19.11.2006 Где: Voronezh Репутация: 41 Всего: 60 |
как хочешь лучше в бб кодах а в скрипте менять уже на код картинки и так и так одинаковая скорость.
-------------------- Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS. |
|||
|
||||
| Staind |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 17.12.2007 Где: Планета сокровищ Репутация: 2 Всего: 3 |
2Sanchezzz, благодарю, тогда в bbcod'ах буду хранить.
--------------------
Ничто так не раздражает человека, как просьба успокоиться |
|||
|
||||
| flashaa |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: 19 Всего: 25 |
Я думаю НЕ стоит хранить в html, т.к. надо оставлять себе свободу на будущее. К примеру в один прекрасный день ты захочишь выключить BB-теги или по-другому их обрабатывать. Тогда ты просто поменяешь код обработки. А если в базе сохранен сразу html, то с ним уже ничего не сделаешь. К тому же хранить html вообще опасно, лучше проверять и форматировать перед выводом - чуть более ресурсоемко, но надежо и хорошо управляемо.
|
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |