Форум программистов, компьютерный форум, киберфорум
PHP: RegExp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.70/47: Рейтинг темы: голосов - 47, средняя оценка - 4.70
0 / 0 / 0
Регистрация: 10.08.2015
Сообщений: 62

Регулярные выражения: формат телефонного номера (сотовый, российский)

21.10.2015, 11:11. Показов 10133. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите написать регулярку, которая оставляет только Мобильные номера, в России.
И если там есть () или - или пробелы или + - удаляла их.
Нужно чтобы на выходе были только номера формата(все номера должны начинаться с цифры 9)

9202955555
9107895423
...
...

Добавлено через 1 час 39 минут
забыл сказать, на входе номера телефонов разного формата:
427-63-22
495-789-5566
(950)354-66-2-4
и т.д.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.10.2015, 11:11
Ответы с готовыми решениями:

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

ЧПУ. Замена строк, регулярные выражения. Как правильно использовать переменную в регулярные выражения ?
Здравствуйте! Решил реализовать ЧПУ на своем сайте. Первый этап это замена всех реальных ссылок на чпу ссылки. Так вот при замене я...

Преобразование телефонного номера
Номер телефона хранится в формате +380975555555. На выводе нужно функцией преобразовать в формат +38 (097) 555 55 55. Разбирать при...

10
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
21.10.2015, 22:21
Удалить все не числа:
PHP
1
preg_replace('/[^\d]+/', '', $number);
0
217 / 157 / 30
Регистрация: 11.05.2010
Сообщений: 614
21.10.2015, 22:26
ну удрать все "не цифры" можно так:
PHP
1
preg_replace('/[^\d]*/', '', $string);
ну а дальше можно и без регулярки обойтись
---
Jewbacabra, опередил
0
0 / 0 / 0
Регистрация: 10.08.2015
Сообщений: 62
21.10.2015, 22:44  [ТС]
как исключить не сотовые номера и номера других стран?
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
21.10.2015, 22:47
Цитата Сообщение от mgaranov Посмотреть сообщение
как исключить не сотовые номера и номера других стран?
а какой критерий?
1
0 / 0 / 0
Регистрация: 10.08.2015
Сообщений: 62
22.10.2015, 07:27  [ТС]
вид 79ххххххх или 89ххххххххх оставить нужно, а потом отрезать от них 7 и 8 (те что в начале).

Добавлено через 4 часа 9 минут
т.е.
1.убрать из номеров все "НЕ ЦИФРЫ"
2.отобрать только номера вида 79ххххххх и 89ххххххххх и 9ххххххххх
3.если номер начинается с 7 или 8 - отрезать первый знак.

Добавлено через 1 минуту
и ,если это кончено реально, хотел бы увидеть как это написать в одно действие
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
22.10.2015, 08:27
а это не подойдет? Замена в номере телефона
0
0 / 0 / 0
Регистрация: 10.08.2015
Сообщений: 62
22.10.2015, 09:17  [ТС]
там нет проверки на "Российский номер" и на номера домашние. ... тут у меня и сложность основная ...
0
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13440 / 7534 / 829
Регистрация: 09.09.2009
Сообщений: 29,554
22.10.2015, 10:34
PHP
1
2
3
4
5
6
7
8
9
10
11
 $opsos=array('900','901','902','903','904','905','906','908','909','910','911','912','913','914','915','916','917','918','919','920',
'921','922','923','924','925','926','927','928','929','930','931','932','933','934','936','937','938','939','941','950','951','952',
'953','954','955','956','958','960','961','962','963','964','965','966','967','968','969','970','971','980','981','982','983','984',
'985','987','988','989','991','992','993','994','995','996','997','999'); 
 
$op_code = substr($phone,0,3);
 
if (!in_array($op_code,$opsos))
{
         ///   действия, если первые три цифры ноомера не попали в массив кодов операторов...
}
0
0 / 0 / 0
Регистрация: 10.08.2015
Сообщений: 62
22.10.2015, 12:02  [ТС]
о как... ёмко, но работать будет. Думаю из этих ответов можно собрать что-то рабочее. Спасибо)
0
 Аватар для GoDr
90 / 79 / 33
Регистрация: 17.08.2015
Сообщений: 512
Записей в блоге: 1
07.11.2015, 15:45
а не проще применить тогда такой алгоритм:
1. удалить все лишние знаки
2. Проверяем первый символ телефона и оставляем только 7, 8 и 9
3. Проверяем на количество символов:
- если первая цифра 7 или 8, то 11
- если 9 (а мы считаем что на 9 начинаются сотовые телефоны в России), то 10
4. Если 11 символов, то второе число должно быть "9"
5. ну и удаляем 7 и 8

В принципе, я думаю этих условий достаточно чтобы найти сотовый телефон России

Вот небольшой код (на скорую руку, поэтому может быть не самым оптимальным решением)

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$arr_tel = [
    '+79027653764', 
    '7(902)322-33-33',
    '84959282726', 
    '8(495)928-27-26', 
    '928-27-26', 
    '+342229282726', 
    '9027653764'];
 
$result = [];
 
foreach ($arr_tel as $v) {
    $_tmp = preg_replace('#\D#', '', $v);
    if (strlen($_tmp) == 11 and preg_match('#^[7-8](.*)#', $_tmp, $m) and $_tmp[1] == 9) {
        $result[] = $m[1];
    } elseif (strlen($_tmp) == 10 and $_tmp[0] == 9) {
        $result[] = $_tmp;
    }
}
 
print_r($arr_tel);
echo '<hr>';
print_r($result);
PS
Код под PHP 5.4+
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.11.2015, 15:45
Помогаю со студенческими работами здесь

Как изменить формат отображения телефонного номера в базе?
Здравствуйте друзья. В базе есть номера мобильных телефонов вида: &quot;8928XXXXXXX&quot; надо перевести их в вид: &quot;8(928)XXX-XX-XX&quot;. ...

Регулярные выражения для номера телефона с кодом
Всем привет В общем, нужно ввести номер телефона с кодом и при выводе этого номера на экран выделить этот код цветом Вот мой код, но...

Как сделать российский формат дат?
В aspx-файле строка response.write(Now) выдает дату в формате мм.дд.гггг, в asp-файле - мм/дд/гггг. Где нужно чего-нибудь подкрутить, чтобы...

Переадресация с внешнего номера на сотовый
Подскажите как реализовать переадресацию с внешнего номер, на сотовый, по определенному времени? Желательно примерчик.

Поиск телефонного номера в строке
Всем привет. Такая задача. Есть текст. Надо написать программу, которая проверяет, есть ли в строке номер телефона (просто 11 идущих подряд...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru