![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
ElusivE |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 28.3.2005 Репутация: нет Всего: нет |
Вот мне интерестно, как сделать ББКод? собственно мне нужно, чтобы когда я ввожу
это все заменялось на
Как это сделать? Добавлено @ 12:19 Кстати, прошу обратить внимание, что познание пхп у меня среднее |
||||
|
|||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
А поиском попользоваться?
Так, чтобы на виду лежало, выкладываю часть своего старого парсера. Присоединённый файл ( Кол-во скачиваний: 35 ) ![]() |
|||
|
||||
2man |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2007 Регистрация: 6.5.2005 Где: Нижние Чигири Репутация: нет Всего: 71 |
Балин! не успел
![]() Вот пример типичного BB-кода:
Добавлено @ 14:11 А если по-сложнее, то:
regex_build_url() :
-------------------- Быстро поднятое - упавшим не считаеся |
||||||
|
|||||||
podlom |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 18.4.2007 Где: Украина, г. Киев Репутация: нет Всего: нет |
BBCode это не только тег url. Хотелось бы увидеть реализацию замены и других тегов типа: h1, h2, b, i, img и bq, а так же размышления по-поводу того как лучше реализовать и какие проблемы могут возникать.
|
|||
|
||||
SneG0K |
|
|||
![]() Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 7 Всего: 54 |
||||
|
||||
sTa1kEr |
|
|||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 56 Всего: 146 |
||||
|
||||
Sunvas |
|
|||
![]() Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 8 Всего: 89 |
sTa1kEr, а "обратно" парсить он умеет? Из ХТМЛа в BB? - Иначе ж как тогда поступать: в базе данных хранить и каждый раз парсить?
![]() -------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
sTa1kEr |
|
|||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 56 Всего: 146 |
||||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
во-первых, рано или поздно захочешь расширить схему кодов. например, добавишь новые смайлы. а тут - сюрприз: старые сообщения храняться уже ХТМЛными и их не преобразуешь. кроме того, htmlspecialchars ты тоже до записи в базу делаешь? |
|||
|
||||
Sunvas |
|
|||
![]() Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 8 Всего: 89 |
Это тупо маять сервер фигней (жрет производительность): проще один раз отпарсить, а потом только показывать результат вываливая содержимое базы на страницу. IPB так и делает. Ну добавлю и что дальше? Формат смайлов - один и тот же.
Не понял хода мысли: зачем к уже сохраненным сообщениям дописывать смайлы? ![]() Нет. Зачем? -------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
DioNiR |
|
||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 130 Регистрация: 30.12.2006 Репутация: нет Всего: нет |
А что тут сложного то? Добавил и всё.
Как сказал уже Sunvas
Значит ты пускаешь спокойный HTML код в ход? --------------------
Думали это конец? Ха, всё только начинается. |
||||||||
|
|||||||||
HackMan |
|
|||
![]() Юзверь-программист ![]() ![]() Профиль Группа: Участник Сообщений: 391 Регистрация: 18.6.2005 Где: .ua Репутация: 8 Всего: 9 |
Есть два метода хранения данных: с постобработкой (без предварительной обработки) и предобработкой. Или попросту говоря - сырые данные (raw data), которые получены от пользователя, или данные, которые уже обработаны (например, прошли через htmlspecialchars())
Оба способа активно используются. Здесь же надо определиться со структурой сайта, в частности с тем, как эти данные будут использоваться. Например, если это комментарии пользователей, к товару, которые будут просто отображаться, и никаких больше действий над ними не будет производиться, тогда имеет смысл функцию htmlspecialchars() применить (обрабатывать данные) до занесения комментария в базу, что бы не делать этого каждый раз перед выводом, ведь это лишняя нагрузка на сервер. Рассмотрим теперь второй пример. На этом же сайте есть автоцензорный фильтр, который будет вырезать из комментария все маты и заменять их на ***. Этот фильтр наверняка будет дополняться новыми словами, и что бы не было такого, что в фильтр добавили новое слово, и в новых комментариях оно не проходит, а в старых отображается, имеет смысл применять автоцензор (обрабатывать данные) уже после занесения в базу, до вывода в браузер. Вывод: если хранить данные с предобработкой - выигрываем в скорости выполнения и проигрываем в универсальности, а с постобработкой - с точностью наоборот. И выбор, каким из методов пользоваться, ложится на плечи разработчика. Это сообщение отредактировал(а) HackMan - 8.10.2008, 19:16 -------------------- Завтра - это самый загруженный день недели ![]() ![]() ![]() |
|||
|
||||
sTa1kEr |
|
|||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 56 Всего: 146 |
1. На это потребуется совсем не много ресурсов, не больше чем любому шаблонизатору, str_replace или тому же htmlspecialchars() 2. Кеширование никто не отменял. А если уж говорить про проекты с высокой нагрузкой, то тем более большая часть данных как правило берется из кеша. Пример, винград, быстрая цитата. Ты нажал на быструю цитату и в нее подставился id поста, по которому затем можно получить дату, имя, etc. Однако, если пользователь решит отредактировать сообщение, то по дате и имени получить id уже не получится. Хорошо еще если можно как-то ссылку распознать и распарсить, и затем только из нее добыть этот id... Иначе данные, введенные пользователем, потеряны. Или добавлени к сообщению, ставится метка времени, но для отображения никому не нужна эта метка, вместо нее пишется пройденное время. Если добавить в базу именнов таком виде - данные, введенные пользователем, потеряны.
В каком виде смайлы должны хранятся в базе, что бы не пришлось делать постобработку сообщения перед выводом? В виде ссылок на конечные картинки. А теперь представь, что набор смайликов поменялся и ссылки уже должны ввести на совсем другие картинки. Кроме того опять же редактирование постов - ты понаставил смайликов ":)", редактируешь пост и видешь вместо своих смайликов кучу длиннющих тегов [ url ] Нет, htmlspecialchars необходимо использовать перед выводом, а не перед добавлением в базу. |
|||
|
||||
nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 12 Всего: 43 |
ооооо....
google://State Machine алгоритм имхо на регекспах глупо делать - ибо человеческий фактор сыграет роль при куче регекспов, а потом XSS будут. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |