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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Регулярные выражения 
:(
    Опции темы
Фрезеровщик
Дата 18.6.2014, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте уважаемые форумчане. Подскажите пожалуйста как решить эту задачу:

Дан текст, который по идее должен быть номером телефона в виде 8-(911)-506 56 56 (т.е. человек может ввести не только цифры, но и скобки, минусы, может что-то еще). Но в реальности, пользователь может вместо номера написать что угодно. Напиши скрипт для проверки правильности введенного номера («8(911)-506 56 56» — правильный номер, «8-911-50-656-56» — правильный, «89115065656» — правильный, «02» — неправильный, «89115065656 позвать Люду» — неправильный).

Спасибо
PM MAIL   Вверх
SamDark
Дата 19.6.2014, 01:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


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

Репутация: 10
Всего: 38



Не обязательно решать задачу только регулярками. Как я понял, задача проверить мобильный телефон РФ.

1. Убираем все минусы, скобки, пробелы:

Код

$phone = str_replace(['-', '(', ')', ' '], '', $phone);


2. Проверяем простейшей регуляркой:

Код

$isPhone = preg_match('~^\+?[0-9]{11}$~', $phone);




--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
Aliance
Дата 19.6.2014, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



Почитайте вот эту статью и откажитесь от решения задачи, которая только усложняет жизнь.
PM MAIL WWW ICQ Skype   Вверх
Gold Dragon
Дата 21.6.2014, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

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



Aliance, спорная статья ;)

Фрезеровщик, никогда так не делай. Лично меня очень бесит когда я должен ввести в форму валидный телефон при том что не используется маска!!! БЕСИТ!!! smile

Если ты решил делать подобное, то:

1. Сделай маску ввода. Способов много, вот несколько 

- использовать js-библиотеку для jQuery. Есть простые и лёгкие, есть навороченные, тебе выбирать.

- воспользоваться приятным нововведением HTML5 и сделать что-то такое
Код

<input type="tel" pattern="8-\([0-9]{3}\)-[0-9]{3}\s[0-9]{2}\s[0-9]{2}">


2. Получить любые данные от клиента и преобразовать в тот вид, который тебя устроит. Что-то типа такого (топорно, но наглядно)

Код

$tel = '+7(9 0 2) (73-62)7-93';

$tel_num = preg_replace('#\\D#', '', $tel);

if(strlen($tel_num) != 11){

    $result = 'Что-то телефон не такой';

}else{

    $result = '8-('
        . $tel_num[1]
        . $tel_num[2]
        . $tel_num[3]
        . ')-'
        . $tel_num[4]
        . $tel_num[5]
        . $tel_num[6]
        . ' '
        . $tel_num[7]
        . $tel_num[8]
        . ' '
        . $tel_num[9]
        . $tel_num[10]
    ;
}

echo $result;


А вообще есть вопрос.. Зачем такие требования к телефону? Если ты собираешься в таком виде данные хранить, то это очень не разумно и не продуктивно smile


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0613 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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