Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: ББ коды, основы

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
neatek
Отправлено: 19 Января, 2012 - 12:07:02
Post Id



Гость


Покинул форум
Сообщений всего: 113
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




1) Как определить что находить после знака равно в конструкции [img=]
2) Как правильно заменять бб код на HTML код?
 
 Top
Данил_123
Отправлено: 19 Января, 2012 - 12:19:26
Post Id


Участник


Покинул форум
Сообщений всего: 1026
Дата рег-ции: Июнь 2011  
Откуда: rostov


Помог: 9 раз(а)




2)
PHP:
скопировать код в буфер обмена
  1. $arrBB = array("[B]","[/B]");
  2. $arrHTML = array("<b>","</b>");
  3. $string = "[B]Жирно[/B], не жирно";
  4. print(str_replace($arrBB, $arrHTML, $string));

(Отредактировано автором: 19 Января, 2012 - 12:22:07)



-----
http://mysitecost.ru
 
 Top
neatek
Отправлено: 19 Января, 2012 - 12:29:33
Post Id



Гость


Покинул форум
Сообщений всего: 113
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




Ну так это я и сам мог написать.

меня интересует как определить вот это: [IMG=ТЕКСТ]
Вопрос: ак в данной конструкции получить ТЕКСТ

Далее если просто делать замену [IMG= и ] на <img src=" и ">
То можно запросто впихнуть XSS...
Вопрос: Но как сделать так чтобы замена тегов ББ на HTML шла безопасно?

Надеюсь вы меня поняли.

PS. меня не интересует замена стандартных тегов: [b] [u] [i] и.т.д, это легко и безопасно.

(Отредактировано автором: 19 Января, 2012 - 12:30:56)

 
 Top
Okula
Отправлено: 19 Января, 2012 - 12:44:57
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




Данил_123, неверно. Если не закрыть тег [b] то у тебя весь текст станет "жирным"
 
 Top
neatek
Отправлено: 19 Января, 2012 - 12:47:12
Post Id



Гость


Покинул форум
Сообщений всего: 113
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




Okula пишет:
Данил_123, неверно. Если не закрыть тег [b] то у тебя весь текст станет "жирным"

Можно использовать str_replace, посчитать скоко замен сделано, далее если замен [*b] меньше чем [*/b], то добавляем в конец текста нужное количество тегов.

neatek пишет:
меня интересует как определить вот это: [IMG=ТЕКСТ]
Вопрос: Как в данной конструкции получить ТЕКСТ

Далее если просто делать замену [IMG= и ] на <img src=" и ">
То можно запросто впихнуть XSS...
Вопрос: Но как сделать так чтобы замена тегов ББ на HTML шла безопасно?

(Отредактировано автором: 19 Января, 2012 - 12:47:33)

 
 Top
Данил_123
Отправлено: 19 Января, 2012 - 12:53:47
Post Id


Участник


Покинул форум
Сообщений всего: 1026
Дата рег-ции: Июнь 2011  
Откуда: rostov


Помог: 9 раз(а)




Okula да так и есть..


-----
http://mysitecost.ru
 
 Top
Okula
Отправлено: 19 Января, 2012 - 14:09:35
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




neatek пишет:
Можно использовать str_replace, посчитать скоко замен сделано, далее если замен [*b] меньше чем [*/b], то добавляем в конец текста нужное количество тегов.

Это говнокод будет. Вот нормальный бб-код тега <b>
PHP:
скопировать код в буфер обмена
  1. $text = preg_replace("~\[b\](.+?)\[/b\]~is", "<b>$1</b>", $text);
 
 Top
BendeR_say
Отправлено: 19 Января, 2012 - 15:36:51
Post Id


Новичок


Покинул форум
Сообщений всего: 47
Дата рег-ции: Янв. 2012  


Помог: 0 раз(а)




Okula
Можно подробней, что означает (.+?) в это регулярке?
 
 Top
Okula
Отправлено: 19 Января, 2012 - 16:14:39
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




Разберу всё по порядку:
. - Точка. Совпадает с любым символом, кроме перевода строки.
+ - Квантификатор совпадений. Обозначает одно или более совпадений с предшествующим квантификатору символом или шаблоном.
? - Квантификатор совпадений. Обозначает ноль или одно совпадение с предшествующим квантификатору символом или шаблоном.
(...) - Определяет вложенный шаблон, который может использоваться для группировки некоторых элементов.

В данном примере квантификатор ? работает как "таблетка от жадности". Устанавливая его после квантификаторов + или * будет ставиться минимальное совпадение по шаблону.

Также для отключение жадности есть модификатор U устанавливая его в регулярном выражении "жадные" квантификаторы становятся "ленивыми", а "жадность" включается квантификатором ?

Тоесть приведённое мной выше регулярное выражение может быть записано так:
PHP:
скопировать код в буфер обмена
  1. $text = preg_replace("~\[b\](.+)\[/b\]~Uis", "<b>$1</b>", $text);
 
 Top
BendeR_say
Отправлено: 19 Января, 2012 - 16:19:28
Post Id


Новичок


Покинул форум
Сообщений всего: 47
Дата рег-ции: Янв. 2012  


Помог: 0 раз(а)




Спасибо! Закатив глазки
isU это так называемые модификаторы в регулярных выражениях. Каждая буква меняет поведение регулярного выражения.

i Включает нечувствительность выражения к регистру символов
s Включает режим соответствия точки символам переноса строки и возврата каретки
U Делает все количественные метасимволы "не жадными" по умолчанию.
Это для будущего)

(Отредактировано автором: 19 Января, 2012 - 16:26:43)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB