![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
garden |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 28.4.2006 Репутация: нет Всего: нет |
Здравствуйте.
Пишу небольшой сайтик для себя, время от времени у меня возникают небольшие вопросы, по большей части, касающиеся безопасности, если Вам будет не трудно - помогите советом. Первый вопрос у меня следующий: Каким образом "обезопасить" текст статьи/комментариев, которые оставил пользователь? Сейчас, перед добавлением в базу mysql я пропускаю текст через следующие функции:
Достаточно ли этого или же необходимо сделать еще что-то? Второй вопросик: После форматирования текста, иногда, получаются двойные, тройные,....,десятерные переносы в тексте. Каким образом возможно заменить все переносы строк, которые встречаются более одного раза, на один? Пример исходного текста:
Нужно получить:
|
||||||
|
|||||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
на будущее: каждый вопрос создавай в отдельной теме, ладно?
при соxранении в БД достаточно только mysql_real_escape_string. никакой изменяющей содержимое обработки(например, strip_tags) делать не надо - вдруг потом надо будет оригинал? перед выводом htmlspecialchars - коль кто захочет вставить теги, увидит только код. |
|||
|
||||
garden |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 28.4.2006 Репутация: нет Всего: нет |
Спасибо большое, так и сделаю.
Остался только вопрос, как вырезать лишние переносы строк в тексте? Дело в том, что при выводе из базы, текст пропускаю через функцию nl2br(). Лишние переносы -> лишние <br /> и некрасивый внешний вид текста. P.S. Не хотел засорять своими вопросами форум, решил создать только одну тему. На будущее - буду знать. |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
используй регулярные выражение.
вроде такого:
возможно, понадобится модификатор u, если ты испольщуешь UTF-8 |
|||
|
||||
garden |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 28.4.2006 Репутация: нет Всего: нет |
Спасибо.
Но, пришлось чуть-чуть подправить. Работать стало следующее:
|
|||
|
||||
flashaa |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: 19 Всего: 25 |
str_ireplace намного быстрее в случае простой замены, чем регулярка.
|
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
flashaa, угу. только как должны выглядеть замена?
меняем "\n\r\n\r" на "\n\r"?в таком случае "str_ireplace" сделает из трех переносов два. значит для того, чтоб точно обработать 4-х, 5-ти и более-кратные переносы надо запускать цикл. Причем, не фиксированное количество раз, а до тех пор, пока текст не перестанет меняться или пока поиск двухкратного переноса не прекратит находить вхождения. Почему-то мне кажется, что регулярные выражения, выполняемые "на уровне ядра РНР" выполняться быстрее, чем цикл по тексту, выполняемый на уровне интерпретируемого скрипта... Это сообщение отредактировал(а) skyboy - 2.11.2007, 18:12 |
|||
|
||||
flashaa |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: 19 Всего: 25 |
Согласен, не подумал
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |