Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Обработка текста для придания ему читабельности
 
 автор: PantiL   (14.03.2006 в 22:10)   письмо автору
 
 

Перечислите плиз все что надо сделать с введенным польнзоватлем тесктом, например в гостевой или вот здесь на форуме. Я представляю что надо сделать, но все ли я знаю?
1.Удалить в начале и в конце пробелы
2.nl2br
3.Убрать слишком много <br>
4.Убрать или разрезать слишком длинные слова.
5.htmlspecialchars (при выводе из базы)
6.magic_quotes (при вводе в базу)
....

Может еще что-то ?

   
 
 автор: FaStY   (14.03.2006 в 22:27)   письмо автору
 
   для: PantiL   (14.03.2006 в 22:10)
 

а теперь все тоже самое, но с примерами :)

   
 
 автор: Panker   (14.03.2006 в 22:58)   письмо автору
 
   для: FaStY   (14.03.2006 в 22:27)
 

$name = htmlspecialchars(substr($_POST['name'], 0, 10)); htmlspecialchars
$name = trim($name); првоерка пробелов
$comments = str_replace("<br />"," ",$comments); 3.Убрать слишком много <br>

   
 
 автор: Panker   (14.03.2006 в 23:00)   письмо автору
 
   для: FaStY   (14.03.2006 в 22:27)
 

$name = htmlspecialchars(substr($_POST['name'], 0, 10)); htmlspecialchars
$name = trim($name); првоерка пробелов
$comments = str_replace("<br />"," ",$comments); Убрать слишком много <br>
$comments = wordwrap($comments, 30, " ", 1); // Большие слова разделяем пробелом!
6.magic_quotes (при вводе в базу) что такое не знаю :)

   
 
 автор: Trianon   (14.03.2006 в 23:10)   письмо автору
 
   для: PantiL   (14.03.2006 в 22:10)
 

Мне очень неудобно на самого себя ссылки давать. Только что я могу сделать.

   
 
 автор: PantiL   (15.03.2006 в 18:51)   письмо автору
 
   для: Trianon   (14.03.2006 в 23:10)
 

Задавая вопрос я имел ввиду не как обезопаситься от инъекций или других атак, ну это конечно тоже, но главным образом меня интересовало то, как обезопаситься от осознанного ввода каким нибудь приколистом абрыкадабры. Миллион раз нажать ентер, или же слова длиной по 1000 знаков. Какие методы обработки текста надо применить чтобы введенный пост выглядел по человечески, не нарушая дизайна, не растягивая его в ширь. ну и тд и тп

   
 
 автор: Trianon   (15.03.2006 в 18:55)   письмо автору
 
   для: PantiL   (15.03.2006 в 18:51)
 

Тут я пас.
Чтобы испортить внешний вид, среднему приколисту достаточно трех-пяти букв.

   
 
 автор: Panker   (15.03.2006 в 19:33)   письмо автору
 
   для: Trianon   (15.03.2006 в 18:55)
 

не только! вот например не одна извыше упомянутых функций не защищает гсотевую или ещё что то от знаков таких как ;:!@#$% тоисть эти знаки не разбиваются при длином слове а так и остаются вот и написал таких штук 200 и внешний вид коту под хвост

   
 
 автор: kasmanaft   (15.03.2006 в 19:39)   письмо автору
 
   для: Panker   (15.03.2006 в 19:33)
 

от миллиона пробелов или энтеров или еще чего спасает trim($str);
а миллион "ыыыыыыыыыыыыы" можно разрезать вот так

создаем где-нить такую функцию:

function split_text($matches)
{
return wordwrap($matches[1], 50, ' ',1);
}

а потом обрабатываем строку перед выводом
$str = preg_replace_callback(
"|(\w{100,})|",
"split_text",
$str);

в результате получаем вот что:

ааааааааааааааааааааааааааааааааааа ааааааааааааааааааааааааааааааааааа ааааааааааааааааааааааааааааааааааа ааааааааааааааааааааааааааааааааааа аааааааааааааааа

(эта функция приводилась тут на форуме недавно, поэксперементируй... с числами)

   
 
 автор: Trianon   (15.03.2006 в 20:19)   письмо автору
 
   для: kasmanaft   (15.03.2006 в 19:39)
 

Вот такие решения меня огорчают несказанно. В том числе и в этом форуме.
Потом пишешь совершенно легитимный [urI=http://просто-очень-длинный]адрес[/urI], и тебе его бабах! и разрубили. И накрывается твоя ссылка медным тазом.

   
 
 автор: PantiL   (15.03.2006 в 21:46)   письмо автору
 
   для: Trianon   (15.03.2006 в 20:19)
 

Так что же тогда делать?
Оставлять все как есть?
Это ж не дело.

   
 
 автор: Trianon   (15.03.2006 в 21:48)   письмо автору
 
   для: PantiL   (15.03.2006 в 21:46)
 

Конечно, не дело. Но не по живому же резать.

   
 
 автор: Panker   (15.03.2006 в 23:13)   письмо автору
 
   для: Trianon   (15.03.2006 в 21:48)
 

символы не обрезать не как походу символы типа !@#%^ : ;;

   
 
 автор: Axxil   (16.03.2006 в 10:17)   письмо автору
 
   для: PantiL   (15.03.2006 в 21:46)
 

Так что ж велосипед изобретать?
При разборе то что в href стоит оставляем без изменении а текст между тегами обрезаем как пожелаем.
и получаем например следующее

<a href="http://www.the_very_long_domain_name.com">http://www.the_very...name.com</a>

И волки сыты и овцы целы :)

   
 
 автор: cheops   (16.03.2006 в 00:28)   письмо автору
 
   для: Trianon   (15.03.2006 в 20:19)
 

Ссылка как раз разрезана не будет - это регулярное выражение затронет только текст вида
ффффффффффффффффффффффффффффффффффф ффффффффффффффффффффффффффффффффффф ффффффффффффффффффффффффффффффффффф ффффффффффффффффффффффффффффффффффф ффффффффффффффффффффффффффффффффффф ффффффффффф

   
 
 автор: Trianon   (16.03.2006 в 01:26)   письмо автору
 
   для: cheops   (16.03.2006 в 00:28)
 

И кто сказал, что я не могу такой текст сделать частью ссылки?

   
 
 автор: kasmanaft   (16.03.2006 в 07:20)   письмо автору
 
   для: Trianon   (16.03.2006 в 01:26)
 

ну если так принципиально, можно посмотреть не находится ли текст между [u r l] и [/u r l ] :)

   
 
 автор: Trianon   (16.03.2006 в 10:59)   письмо автору
 
   для: kasmanaft   (16.03.2006 в 07:20)
 

Не между [urI] и [/urI]. А между <a href=" и "> уже после подстановки. Текст ссылки можно и нужно резать.

   
 
 автор: cheops   (16.03.2006 в 14:01)   письмо автору
 
   для: Trianon   (16.03.2006 в 01:26)
 

Сложнова-то будет это сделать... редко в ссылках используется неразрывная последовательность букв (без точек, слешей, =, %, ? и &) больше 25-35 символов подряд. Наверное можно найти такой URL, но я такой длинный видел только один раз в теме, в которой форумчане соревновались кто длиннее домен найдёт :)))

   
 
 автор: Саня   (16.03.2006 в 14:22)   письмо автору
 
   для: cheops   (16.03.2006 в 14:01)
 

Часто делают так: ссылку в href подставляют неизменной (главное чтобы она подходила под регулярное выражение), а название сокращают
<a href="http://www.very-very-very-long-domain-name.com/with?long=query&string=1">www.very-very...&string=1</a>

   
 
 автор: Саня   (16.03.2006 в 14:30)   письмо автору
 
   для: PantiL   (14.03.2006 в 22:10)
 

Думаю, стоит посмотреть на результат работы лебедевского типографа и попытаться наваять скрипт, делающий то же самое.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования