Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Программирование на PHP

  Все выпуски  

RusFAQ.ru: Программирование на PHP


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / PHP

Выпуск № 730
от 04.08.2007, 20:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 443, Экспертов: 64
В номере:Вопросов: 1, Ответов: 5


Вопрос № 96734: Здравствуйте! У меня вопрос по регулярным выражениям. Мне надо проверить вводились числа или нет я использую if (!preg_match["0-9"]) - но это выражение только проверяет цифры 123456789, а как быть с двузначными и т.д. числами? Проверять...

Вопрос № 96.734
Здравствуйте!
У меня вопрос по регулярным выражениям. Мне надо проверить вводились числа или нет я использую if (!preg_match["0-9"]) - но это выражение только проверяет цифры 123456789, а как быть с двузначными и т.д. числами? Проверять с помощью выражения
["a-zA-Z"] или есть другой способ?
Спасибо
Отправлен: 30.07.2007, 20:08
Вопрос задал: Sky24dive (статус: Посетитель)
Всего ответов: 5
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Nexus
Здравствуйте, Sky24dive!

if (!preg_match("/([0-9]+)/", $string, $matches)) {
...
}

+ - означает одно или больше повторений
* - ноль или больше :)

Нужно чтобы не было именно чисел? Тогда вообщем-то и твоя проверка проходит, т.е. если хотя бы одна цифра есть, то условие не выполнится. А если нужно вытащить эти числа, тогда так как описал.
Ответ отправил: Nexus (статус: 9-ый класс)
Ответ отправлен: 30.07.2007, 20:15
Оценка за ответ: 5

Отвечает: Flynn
Здравствуйте, Sky24dive!
Не совсем понял что значит двузначные и т.д.
Но вообще preg_match["0-9"] - проверит входят ли цифры в то что было введено независимо сколько их, или где они, или есть ли там буквы.
Если надо чтобы было больше нескольких цифр подряд - preg_match("[0-9]{2,}") - проверит чтобы цифр было больше или равно двум. Если убрать запятую - только две цифры. Если после запятой поставить например 4 - то от 2 до 4 цифр подряд.

Но я бы вообще посоветовал для проверки вводимых данных на цуифры использовать intval (doubleval,floatval) - эти функции преобразуют все что ввел пользователь в число. И если там ничего не введено или билиберда - будет равно нулю. Зато можно с увереностью сказать что у нас в этой переменной число, а не непонятно что.
Ответ отправил: Flynn (статус: 3-ий класс)
Ответ отправлен: 30.07.2007, 20:53
Оценка за ответ: 4

Отвечает: Magister
Здравствуйте, Sky24dive!

Используйте классы выражений: для чисел это будет (d+)

Рекомендую почитать
http://ru2.php.net/manual/ru
http://ru2.php.net/manual/ru/ref.pcre.php

Приложение:

---------
Aquila non Capta Muscas

Ответ отправил: Magister (статус: 3-ий класс)
Ответ отправлен: 30.07.2007, 21:42

Отвечает: Бобровский Сергей Сергеевич
Здравствуйте, Sky24dive!
Лучше в таком случае использовать функцию
is_numeric($num);
работает быстрее регулярных выражений, она вернет true даже если это строка типа string, но в ней находятся числа. Если же обязательно использовать регулярные выражения, то подойдет следующее
ereg("^[0-9]+$");
^ - означает начало строки
$ - её конец
+ - совпаданий от одного и больше
Вместо + можно использовать {1,3} - значит, совпадение от 1 до 3 раз. Или {3,} - от трёх и больее раз.
Ваше же выражение вернет true, если найдёт хотя бы одно число в строке. Кстати, одно замечание, скорее всего у тебя опечатка, аргумент функции передается не в квадратных скобках, а в круглых.
---------
Никогда не бойтесь делать то, что не умеете! Помните: Ноев Ковчег построил любитель, а Титаник - профессионал.
Ответ отправил: Бобровский Сергей Сергеевич (статус: 1-ый класс)
Ответ отправлен: 31.07.2007, 09:34

Отвечает: Powoditch konstantin
Здравствуйте, Sky24dive!
Первое - надо писать не if (!preg_match["0-9"]), а if (!preg_match("[0-9]", $str) !
Если Вы будете использовать if (!preg_match["0-9"]) - то это выражение будет работать ТОЛЬКО в том случае если будет осуществятся проверка однозначного числа или символа. Для того чтобы сделать корректную проверку для двух и более символов надо дописать это:
if (!preg_match("[0-9]+", $str) - работает с любым количеством символов, вместе с первым(если не так - извините за неточности)
if (!preg_match("[0-9]*", $str) - работает с любым количеством символов
Ответ отправил: Powoditch konstantin (статус: 3-ий класс)
Ответ отправлен: 31.07.2007, 18:58


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.54 beta от 01.08.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное