| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Пишу небольшой сайтик |
| Автор: garden 2.11.2007, 01:48 | ||||||
| Здравствуйте. Пишу небольшой сайтик для себя, время от времени у меня возникают небольшие вопросы, по большей части, касающиеся безопасности, если Вам будет не трудно - помогите советом. Первый вопрос у меня следующий: Каким образом "обезопасить" текст статьи/комментариев, которые оставил пользователь? Сейчас, перед добавлением в базу mysql я пропускаю текст через следующие функции:
Достаточно ли этого или же необходимо сделать еще что-то? Второй вопросик: После форматирования текста, иногда, получаются двойные, тройные,....,десятерные переносы в тексте. Каким образом возможно заменить все переносы строк, которые встречаются более одного раза, на один? Пример исходного текста:
Нужно получить:
|
| Автор: skyboy 2.11.2007, 02:14 |
| на будущее: каждый вопрос создавай в отдельной теме, ладно? при соxранении в БД достаточно только mysql_real_escape_string. никакой изменяющей содержимое обработки(например, strip_tags) делать не надо - вдруг потом надо будет оригинал? перед выводом htmlspecialchars - коль кто захочет вставить теги, увидит только код. |
| Автор: garden 2.11.2007, 02:23 |
| Спасибо большое, так и сделаю. Остался только вопрос, как вырезать лишние переносы строк в тексте? Дело в том, что при выводе из базы, текст пропускаю через функцию nl2br(). Лишние переносы -> лишние <br /> и некрасивый внешний вид текста. P.S. Не хотел засорять своими вопросами форум, решил создать только одну тему. На будущее - буду знать. |
| Автор: skyboy 2.11.2007, 09:32 | ||
| используй регулярные выражение. вроде такого:
возможно, понадобится http://www.php.net/manual/ru/reference.pcre.pattern.modifiers.php u, если ты испольщуешь UTF-8 |
| Автор: garden 2.11.2007, 13:41 | ||
| Спасибо. Но, пришлось чуть-чуть подправить. Работать стало следующее:
|
| Автор: flashaa 2.11.2007, 17:26 |
| str_ireplace намного быстрее в случае простой замены, чем регулярка. |
| Автор: skyboy 2.11.2007, 18:12 |
| flashaa, угу. только как должны выглядеть замена? меняем "\n\r\n\r" на "\n\r"?в таком случае "str_ireplace" сделает из трех переносов два. значит для того, чтоб точно обработать 4-х, 5-ти и более-кратные переносы надо запускать цикл. Причем, не фиксированное количество раз, а до тех пор, пока текст не перестанет меняться или пока поиск двухкратного переноса не прекратит находить вхождения. Почему-то мне кажется, что регулярные выражения, выполняемые "на уровне ядра РНР" выполняться быстрее, чем цикл по тексту, выполняемый на уровне интерпретируемого скрипта... |
| Автор: flashaa 2.11.2007, 18:13 |
| Согласен, не подумал |