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

Форум PHP

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

 

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

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

тема: как определить длинные строки
 
 автор: Nevi   (27.12.2007 в 22:24)   письмо автору
 
 

Здравствуйте

Подскажите как максимально просто (например строковыми функциями которые быстро работают) определить что ввели строку например

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aa

например в чатах сделать защиту чтобы не снифили ?

и как сделать чтобы не вводили запрещенные символы типа
® или ž›

   
 
 автор: Unkind   (27.12.2007 в 22:38)   письмо автору
 
   для: Nevi   (27.12.2007 в 22:24)
 

> и как сделать чтобы не вводили запрещенные символы типа
Это какие такие? Если бы тот же "®" был тут запрещен, то Вы бы не смогли его напечатать.

   
 
 автор: Faraon   (27.12.2007 в 23:02)   письмо автору
 
   для: Nevi   (27.12.2007 в 22:24)
 

Почему вас эти символы смущают?

   
 
 автор: Nevi   (27.12.2007 в 23:13)   письмо автору
 
   для: Faraon   (27.12.2007 в 23:02)
 

давайте по порядку
1/ как определить длинные строки (просьба помочь именно по ЭТОМУ ВОПРОСУ)

ууууууууууууууууууууууууууууууууууу ууууууууууууууууууууууууууууууууууу уууууууууууууууууууууууууууууууу

вот такое например не должно выводиться в чате


2. те немногие символы которые я написал (а их значительно больше) делают невалидные страницы xhtml

тут пока я сам копался наткнулся на mb_string

так вот появились вопросы -
1. я так понял что это не на всяким сервере работает - как узнать что mb_ функиции будут работать на хостере

   
 
 автор: Саня   (27.12.2007 в 23:20)   письмо автору
 
   для: Nevi   (27.12.2007 в 23:13)
 

1. Длинные строки, как, например, на этом форуме, разбиваются функцией wordwrap(). А вообще длину строки можно определить функцией strlen().
2. Все потенциально невалидные символы легко можно заменить на их псевдонимы функцией htmlspecialchars().

   
 
 автор: Unkind   (27.12.2007 в 23:24)   письмо автору
 
   для: Nevi   (27.12.2007 в 23:13)
 

2. Если Вы имеете ввиду байты, которые не принимает валидатор, то

<?php
function cleanup($string)
{
    
$bb = array(
    
"\x00""\x01""\x02""\x03""\x04""\x05""\x06",
    
"\x07""\x08""\x0B""\x0C""\x0E""\x0F""\x10""\x11""\x12",
    
"\x13""\x14""\x15""\x16""\x17""\x18""\x19""\x1A""\x1B",
    
"\x1C""\x1D""\x1E""\x1F"
    
);

    return 
str_replace($bb''$string);
}

$string cleanup("String... \0 ...");
?>

   
 
 автор: Nevi   (28.12.2007 в 01:50)   письмо автору
 
   для: Unkind   (27.12.2007 в 23:24)
 

&#208;&#65533;&#209;&#65533;&#208;&#65533;&#208;&#186;

   
 
 автор: Unkind   (28.12.2007 в 01:53)   письмо автору
 
   для: Nevi   (28.12.2007 в 01:50)
 

Это не запрещенные символы, это символы которых нет в данной кодировке, поэтому браузер заменяет их на это. Это и никак не делает страницу невалидной. Это максимум делает страницу некрасивой, не более.

   
 
 автор: Nevi   (28.12.2007 в 02:23)   письмо автору
 
   для: Unkind   (28.12.2007 в 01:53)
 

спасибо
а все же как решить первый вопрос
я пока так и ни придумал ничего

хотел было использовать explode ( ) по пробелу , но тоже не получится ведб человек может написать просто одно слово

так как же исключать из чатов строки типа

ууууууууууууууууууууууууууууууууууу уууууууууууууууууууууууууууууууу
или ууууууууууууууууууууууууууууууууууу ууууу ууууууууууууууууууууууууу

помогите пожалуйста ! Я за что и люблю ваш форум и почти каждый день читаю его потому что здесь людям реально помогают!

   
 
 автор: sim5   (28.12.2007 в 03:05)   письмо автору
 
   для: Nevi   (28.12.2007 в 02:23)
 

Вам уже сказали strlen() - и даже одно слово эта функция поймет. Или вы хотите запретить не длину слова как таковую, а "бредовые" слова из одного и того же символа?

   
 
 автор: Art-Roman   (28.12.2007 в 09:21)   письмо автору
 
   для: sim5   (28.12.2007 в 03:05)
 

есть функция для подсчета встречаемости каждой буквы в строке. Процент повторяемости (отношение к длине строке*100%) поможет фильтровать чушь. Напрмер, одна буква не может занимать 50% текста. Исходя из этого - делать фильтр

substr_count - функция, выдающая кол-во вхождений для каждой буквы (нужно вызввать отдельно)

   
 
 автор: sim5   (28.12.2007 в 12:18)   письмо автору
 
   для: Art-Roman   (28.12.2007 в 09:21)
 

>одна буква не может занимать 50% текста

Молоко

   
 
 автор: Loki   (28.12.2007 в 13:15)   письмо автору
 
   для: sim5   (28.12.2007 в 12:18)
 

ООО Молоко - 100% и 50%:)

   
 
 автор: cheops   (28.12.2007 в 12:04)   письмо автору
 
   для: Nevi   (27.12.2007 в 23:13)
 

1) Вы можете принудительно разбить длинное слово на более короткие, или вообще исключить это слово. Отталкиваться можно от кода, представленного по ссылке http://www.softtime.ru/forum/read.php?id_forum=6&id_theme=4580.

   
 
 автор: mihdan   (29.12.2007 в 12:51)   письмо автору
 
   для: Nevi   (27.12.2007 в 22:24)
 


<?
wordwrap
($str20' ',1);
?>

   
 
 автор: Nevi   (30.12.2007 в 03:45)   письмо автору
 
   для: mihdan   (29.12.2007 в 12:51)
 

&#9829;
КАк сделать чтобы при попытке вводе таких символов сердечко или игральные карты - как то это определялось и выдавалось чтото взамен
&#9829;

80.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0

80.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0
что за символы


   
Rambler's Top100
вверх

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