Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Повторение букв в слове 
:(
    Опции темы
proger
Дата 13.6.2011, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 400
Регистрация: 10.10.2004

Репутация: нет
Всего: 1



Здравствуйте, на сайте кодировка utf-8
Хочу сделать проверку формы, после того как мне послали текст, разбиваю его на слова. теперь хочу сделать запрет на повторение в слове более 4 раз одной буквы, например запрет слова фуууууууууууу и т.д.
Делал циклом по буквам, но что то с русским не очень отрабатывает. Есть ли решения, без цикла с регуляркой?

Код

function check_max_length_word($text){
    $max_kol = 25; //максимальная длина слова
    $max_sym = 4; //кол-во одинаковых символов подряд
    $text = str_replace("\n"," ",$text);//заменяем переход на новую строку
    $text = str_replace("\t"," ",$text);//заменяем табуляцию
    $str = explode(" ", $text); //разбиваем строку на слова
    for($t=0;$t<count($str);$t++){
        if ((int)mb_strlen($str[$t],"UTF-8")>$max_kol) return false;

        //в каждом слове запрещаем частое повторение символа
        $kol_repeat = 0;
        $last_sym = "";
        for ($j=0;$j<(int)mb_strlen($str[$t],"UTF-8");$j++){            
            
            if ($str[$t][$j]==$last_sym) $kol_repeat++;
            else {
                $last_sym = $str[$t][$j];
                $kol_repeat = 0;
            }
            if ($kol_repeat>=$max_sym) return false; //если много повторений
        }   

    }
    return true;
}


Это сообщение отредактировал(а) proger - 13.6.2011, 19:01
PM MAIL   Вверх
bars80080
Дата 13.6.2011, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(proger @  13.6.2011,  09:47 Найти цитируемый пост)
теперь хочу сделать запрет на повторение в слове более 4 раз одной буквы

считаешь, что таких слов не существует?
а как же "переселенец"?
PM MAIL WWW   Вверх
Shogun
Дата 13.6.2011, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сёгун-сан
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 8.6.2006
Где: Кишинёв

Репутация: 9
Всего: 11



Цитата(bars80080 @  13.6.2011,  13:58 Найти цитируемый пост)
считаешь, что таких слов не существует?
а как же "переселенец"? 


Он наверное про то чтобы не было букв повторяющиеся подряд более 4 раз.
то-есть не "переселенец" а "пееееееееереселенец"

Код

$max_sym = 4; //кол-во одинаковых символов подрят


preg_replace_all preg_match ...


--------------------
2b || !2b
PM MAIL ICQ Skype   Вверх
proger
Дата 13.6.2011, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 400
Регистрация: 10.10.2004

Репутация: нет
Всего: 1



Цитата(bars80080 @ 13.6.2011,  13:58)
Цитата(proger @  13.6.2011,  09:47 Найти цитируемый пост)
теперь хочу сделать запрет на повторение в слове более 4 раз одной буквы

считаешь, что таких слов не существует?
а как же "переселенец"?

Да подряд!

Добавлено через 38 секунд
Цитата(Shogun @ 13.6.2011,  15:19)
Цитата(bars80080 @  13.6.2011,  13:58 Найти цитируемый пост)
считаешь, что таких слов не существует?
а как же "переселенец"? 


Он наверное про то чтобы не было букв повторяющиеся подряд более 4 раз.
то-есть не "переселенец" а "пееееееееереселенец"

Код

$max_sym = 4; //кол-во одинаковых символов подрят


preg_replace_all preg_match ...

А можно пример?
PM MAIL   Вверх
proger
Дата 16.6.2011, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 400
Регистрация: 10.10.2004

Репутация: нет
Всего: 1



????
PM MAIL   Вверх
patap
Дата 16.6.2011, 14:32 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 893
Регистрация: 7.5.2005
Где: Украина, Зп

Репутация: 26
Всего: 40



попробуй так
Код

function check_max_length_word($text)
{
    $max_sym = 3;
    $max_len = 26;
    return ! preg_match('#([а-я])\1{'.$max_sym.'}|\w{'.$max_len.'}#ui', $text);
}


Это сообщение отредактировал(а) patap - 16.6.2011, 14:33


--------------------
На боку кобура болталась, сзади шашка отцовская звякала. 
Впереди меня все хохотало, а позади все плакало (с)
PM MAIL ICQ   Вверх
proger
Дата 17.6.2011, 08:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 400
Регистрация: 10.10.2004

Репутация: нет
Всего: 1



Цитата(patap @ 16.6.2011,  14:32)
попробуй так
Код

function check_max_length_word($text)
{
    $max_sym = 3;
    $max_len = 26;
    return ! preg_match('#([а-я])\1{'.$max_sym.'}|\w{'.$max_len.'}#ui', $text);
}

Ок, попробую. спасибо!

Добавлено через 13 минут и 23 секунды
Цитата(patap @ 16.6.2011,  14:32)
попробуй так
Код

function check_max_length_word($text)
{
    $max_sym = 3;
    $max_len = 26;
    return ! preg_match('#([а-я])\1{'.$max_sym.'}|\w{'.$max_len.'}#ui', $text);
}

Что то с таким текстом ячсмитьбюфывкуцйапролшгнеджзхъэщшячсмитьбюфыв не отрабатывает на длину
PM MAIL   Вверх
proger
Дата 17.6.2011, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 400
Регистрация: 10.10.2004

Репутация: нет
Всего: 1



Цитата(patap @ 16.6.2011,  14:32)
попробуй так
Код

function check_max_length_word($text)
{
    $max_sym = 3;
    $max_len = 26;
    return ! preg_match('#([а-я])\1{'.$max_sym.'}|\w{'.$max_len.'}#ui', $text);
}

А если хочу сделать чтобы никакой символ не повторялся, такая конструкция 
Код

[а-яА-Яa-zA-Z0-9.!()*,_@%&?+=\~/-]
 ????
PM MAIL   Вверх
patap
Дата 17.6.2011, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 893
Регистрация: 7.5.2005
Где: Украина, Зп

Репутация: 26
Всего: 40



Цитата(proger @  17.6.2011,  07:11 Найти цитируемый пост)
не отрабатывает на длину 

эм...да вроде все отрабатывает.
Цитата(proger @  17.6.2011,  07:51 Найти цитируемый пост)
чтобы никакой символ не повторялся

да, в этом случае нужно перечислить нужные символы в квадратных скобках, только если,  в данном случае, в набор будет входить #, то его нужно заэкранировать



--------------------
На боку кобура болталась, сзади шашка отцовская звякала. 
Впереди меня все хохотало, а позади все плакало (с)
PM MAIL ICQ   Вверх
proger
Дата 17.6.2011, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 400
Регистрация: 10.10.2004

Репутация: нет
Всего: 1



Цитата(patap @ 17.6.2011,  09:07)
Цитата(proger @  17.6.2011,  07:11 Найти цитируемый пост)
не отрабатывает на длину 

эм...да вроде все отрабатывает.
Цитата(proger @  17.6.2011,  07:51 Найти цитируемый пост)
чтобы никакой символ не повторялся

да, в этом случае нужно перечислить нужные символы в квадратных скобках, только если,  в данном случае, в набор будет входить #, то его нужно заэкранировать

Возможно что из за отправки данных POSTи у меня на сайте кодировка UTF-8 ?
PM MAIL   Вверх
patap
Дата 17.6.2011, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 893
Регистрация: 7.5.2005
Где: Украина, Зп

Репутация: 26
Всего: 40



да черт его знает.. это надо пробывать, так сказать не могу. Может быть нужно файл скрипта в утф пересохранить

да и если хочешь чтобы вообще любой символ не повторялся, так будет правильнее
Код

'#(.)\1{'.$max_sym.'}|\w{'.$max_len.'}#ui'



--------------------
На боку кобура болталась, сзади шашка отцовская звякала. 
Впереди меня все хохотало, а позади все плакало (с)
PM MAIL ICQ   Вверх
Absinthe
Дата 17.6.2011, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 4.5.2011

Репутация: 5
Всего: 11



Цитата

Возможно что из за отправки данных POSTи у меня на сайте кодировка UTF-8 ?
 У тебя и должна быть UTF-8.
И в заголовках, и в редактируемых файлах.
PM MAIL   Вверх
proger
Дата 17.6.2011, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 400
Регистрация: 10.10.2004

Репутация: нет
Всего: 1



Цитата(patap @ 17.6.2011,  10:35)
да черт его знает.. это надо пробывать, так сказать не могу. Может быть нужно файл скрипта в утф пересохранить

да и если хочешь чтобы вообще любой символ не повторялся, так будет правильнее
Код

'#(.)\1{'.$max_sym.'}|\w{'.$max_len.'}#ui'

Спасибо! щас с кодировкой посмотрю!

Добавлено через 4 минуты и 19 секунд
Цитата(Absinthe @ 17.6.2011,  10:55)
Цитата

Возможно что из за отправки данных POSTи у меня на сайте кодировка UTF-8 ?
 У тебя и должна быть UTF-8.
И в заголовках, и в редактируемых файлах.

Проверил. так и есть!

Добавлено через 5 минут и 16 секунд
Цитата(patap @ 17.6.2011,  10:35)
да черт его знает.. это надо пробывать, так сказать не могу. Может быть нужно файл скрипта в утф пересохранить

да и если хочешь чтобы вообще любой символ не повторялся, так будет правильнее
Код

'#(.)\1{'.$max_sym.'}|\w{'.$max_len.'}#ui'

Код

return ! preg_match('#([а-я])\1{'.$max_sym.'}|\w{'.$max_len.'}#ui', "ячсмитьбюфывкуцйапролшгнеджзхъэщшячсмитьбюфыв");

возвращает true а должен false
PM MAIL   Вверх
proger
Дата 20.6.2011, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 400
Регистрация: 10.10.2004

Репутация: нет
Всего: 1



?????
PM MAIL   Вверх
patap
Дата 20.6.2011, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 893
Регистрация: 7.5.2005
Где: Украина, Зп

Репутация: 26
Всего: 40



все в утэфу, все работает. 
Код

<?php
    header('Content-type: text/html; charser=utf-8');
    
    function check_max_length_word($text)
    {
        $max_sym = 3;
        $max_len = 26;
        return ! preg_match('#(.)\1{'.$max_sym.'}|\w{'.$max_len.'}#ui', $text);
    }
    
    if (isset($_POST['data']))
    {
        $res = check_max_length_word($_POST['data']);
        var_dump($res);
    }

?><html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head> 
<body>
    <form action="1.php" method="post">
        <input type="text" name="data" size="100" />
        <input type="submit" value="Check" />
    </form>
</body>
</html>



--------------------
На боку кобура болталась, сзади шашка отцовская звякала. 
Впереди меня все хохотало, а позади все плакало (с)
PM MAIL ICQ   Вверх
proger
Дата 22.6.2011, 07:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 400
Регистрация: 10.10.2004

Репутация: нет
Всего: 1



Цитата(patap @ 20.6.2011,  12:39)
все в утэфу, все работает. 
Код

<?php
    header('Content-type: text/html; charser=utf-8');
    
    function check_max_length_word($text)
    {
        $max_sym = 3;
        $max_len = 26;
        return ! preg_match('#(.)\1{'.$max_sym.'}|\w{'.$max_len.'}#ui', $text);
    }
    
    if (isset($_POST['data']))
    {
        $res = check_max_length_word($_POST['data']);
        var_dump($res);
    }

?><html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head> 
<body>
    <form action="1.php" method="post">
        <input type="text" name="data" size="100" />
        <input type="submit" value="Check" />
    </form>
</body>
</html>

При слове ячсмитьбюфывкуцйапролшгнеджзхъэщшячсмитьбюфыв результат неверный, пишит true
PM MAIL   Вверх
patap
Дата 22.6.2011, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 893
Регистрация: 7.5.2005
Где: Украина, Зп

Репутация: 26
Всего: 40



false  smile 


--------------------
На боку кобура болталась, сзади шашка отцовская звякала. 
Впереди меня все хохотало, а позади все плакало (с)
PM MAIL ICQ   Вверх
proger
Дата 23.6.2011, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 400
Регистрация: 10.10.2004

Репутация: нет
Всего: 1



Цитата(patap @ 22.6.2011,  09:01)
false  smile

вот http://krg54.kz/test.php
PM MAIL   Вверх
proger
Дата 28.6.2011, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 400
Регистрация: 10.10.2004

Репутация: нет
Всего: 1



?????
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1350 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.