За последние 24 часа нас посетили 59895 программистов и 1771 робот. Сейчас ищут 811 программистов ...

Проверка слов

Тема в разделе "PHP для новичков", создана пользователем Edvard, 30 май 2008.

  1. Edvard

    Edvard Активный пользователь

    С нами с:
    19 апр 2006
    Сообщения:
    108
    Симпатии:
    0
    Адрес:
    Armenia
    Здраствуйте , мне нужно чтобы когда заполняли textfield ,с помощью php проверялось что как минимум 3 слова написано не поможете заранее спасибо.
     
  2. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Edvard
    Лучше проверять количество символов (strlen)
     
  3. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    найти три проблема стоящих отдельно друг от друга :)
     
  4. Johnatan

    Johnatan Активный пользователь

    С нами с:
    6 мар 2008
    Сообщения:
    508
    Симпатии:
    0
    Адрес:
    Испания
    А почему бы не посчитать количество пробелов? Задать маску типа такой: [a-z+]/s[a-z+]/s[a-z+]
    (написал от балды, действительно жарко...)
     
  5. Edvard

    Edvard Активный пользователь

    С нами с:
    19 апр 2006
    Сообщения:
    108
    Симпатии:
    0
    Адрес:
    Armenia
    Вот не знаю как лучше Strlen-ом или посчитать пробелы но все ровно спасибо за помощь.
     
  6. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Johnatan, ха-ха! Это я издеваюсь над тобой. :)
    Код (Text):
    1. substr_count($text, ' ');
     
  7. nimistar

    nimistar Активный пользователь

    С нами с:
    30 май 2007
    Сообщения:
    919
    Симпатии:
    0
    lexa - а его маска может включать определение количества символов в слове :)
    гм просто так ... типа оффтоп
     
  8. Johnatan

    Johnatan Активный пользователь

    С нами с:
    6 мар 2008
    Сообщения:
    508
    Симпатии:
    0
    Адрес:
    Испания
    lexa
    Нэ надо смеяться... Потому как твоя версия пропустит вариант строку в три пробела, а это никак не три слова...
     
  9. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Johnatan, вариант с латинскими буквами меньше катит. :) К варианту с substr_count() придётся и preg_replace('/\s+/', ' ', $text) и trim() вставить. Хм, лучше тогда explode(' ', $text).
     
  10. NOmeR1

    NOmeR1 Активный пользователь

    С нами с:
    11 май 2008
    Сообщения:
    97
    Симпатии:
    0
    На JS можно так:
    [js]<script>
    function check(form) {
    if(form.text.value.match(/^[^\s]+\s[^\s]+\s[^\s]+$/img)) {
    return true;
    } else {
    alert('3 слова минимум!!!');
    return false;
    }
    }
    </script>
    <form method="POST" onSubmit="return check(this)">
    <input type="text" name="text"><br>
    <input type="submit">
    </form>[/js]
    На PHP так:
    PHP:
    1. <?php
    2.     if(preg_match('~^[^\s]+\s[^\s]+\s[^\s]+$~is', $_POST['text'])) {
    3.         echo('Всё нормально');
    4.     } else {
    5.         echo('Не всё нормально');
    6.     }
    7. ?>
     
  11. Johnatan

    Johnatan Активный пользователь

    С нами с:
    6 мар 2008
    Сообщения:
    508
    Симпатии:
    0
    Адрес:
    Испания
    preg_replace('/\s+/', ' ', $text) - если я не ошибаюсь вырубит все пробелы.. Тогда уж preg_replace('/\s{2,}/', ' ', $text)

    А как насчёт проверки на циферки? Ведь если каждое слово будет состоять из цифр, то это уже и не слово вовсе.. :))))
     
  12. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Не, /\s+/ по идеи заменит череду пробелов на один.

    Если число часть предложения, то значит это слово. Ведь число может быть и прописью.

    А вообще, если очень уж серьёзно подходить:
    PHP:
    1. <?php
    2. $text = strip_tags($text); // теги нафиг
    3. $text = preg_replace('/\&\w+\;/', '', $text); // убираем html символы
    4. $text = preg_replace('/(\W|_|-)/', ' ', $text); // убираем всё кроме букв
    5. $text = preg_replace('/\s+/', ' ', $text); // заменяем пробелы
    6. $text = trim($text); // удаляем пробелы по бокам
    7.  
    8. echo (substr_count($text, ' ') + 1); // +1 потому что пробелов всегда на один меньше, чем слов
    Шикарно? :)