Регулярное выражение (regexp) для поиска в тексте номера телефона украинского оператора средствами PHP

Добрый день дорогие читатели. При разработке очередного сайта столкнулся с маленькой проблемой, решение которой и описано в данной статье. А проблема состоит в том, что в размещаемомо тексте на страницах сайта надо было каким-то образом скрыть номера телефонов пользователей. Сами понимаете, не каждый пользователь хочет "сорить" своими личными данными и особенно номерами телефонов во всемирной сети, ведь этими данными возможно воспользуются всякого рода мошенники-вымогатели или другие незаконные элементы.

Итак, объясню на примере. Что мы имеем в качестве задачи? А имеем мы примерно такой текст:

Список заказавших:
Виктория М (+380684876397) - 2шт.
Nastyk Minskaya (0983890014) - 5шт.
Натали 066-389-00-14 - 1шт.
Анэт (м.т.067-03032458) - 3шт.
Татьяна (м.т.0970975357) - 2шт.
Вика (т.067-34-56-633) - 1шт.
Анна (+38098-456-44-65) - 6шт.
и т.д.

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

Для начала надо найти в тексте номера телефонов. Потом заменить часть номера на символы типа ХХХХХХ. И полученный текст вывести на экран.

Для поиска в тексте номера телефона и замене символов наилучшим образом подойдёт функция PHP preg_replace для поиска и замены по шаблону используя регулярные выражения RegExp.

mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )

Функция выполняет поиск совпадений в строке subject с шаблоном pattern и заменяет их на replacement.

Вот и получается, что на PHP надо записать что-то типа:

$text = ' ...... '; # Задаём текст
$pattern = ' ...... '; # Задаём шаблон
$replacement = ' ...... '; # Задаём шаблон замены
$text = preg_replace($pattern, $replacement, $text); # Выполняем замену
echo $text; # выводим текст

Остаётся самое малое - написать шаблоны. Для облегчения этой задачи нам отлично поможет сайт regexr.com на котором можно легко тестировать создаваемые шаблоны для регулярных выражений.

В поле Text на сайте я ввёл пример своего текста, а в поле Expression я прописывал регулярное выражение так, чтобы находились в тексте номера телефонов с разным написанием.

В итоге у меня получился следующий шаблон для поиска:

((\+)?\b(8|38)?(0[\d]{2}))([\d-]{5,8})([\d]{2})

А заменять мы будем на шаблон:

$1ХХХХХ$6

Где вместо $1 будут подставляться начальная часть номера и $6 - конечная часть номера из двух цифр.

В окончательном варианте у меня получился PHP код такого вида:

$text = 'Виктория М (+380684876397) - 2шт.'; # Задаём текст
$pattern = '/((\+)?\b(8|38)?(0[\d]{2}))([\d-]{5,8})([\d]{2})/'; # Задаём шаблон
$replacement = '$1ХХХХХ$6'; # Задаём шаблон замены
$text = preg_replace($pattern, $replacement, $text); # Выполняем замену
echo $text; # выводим текст

В результате мы получим на выходе текст:

Виктория М (+38068ХХХХХ97) - 2шт.

Можно сократить PHP код и тода получим следующее:

$text = preg_replace('/((\+)?\b(8|38)?(0[\d]{2}))([\d-]{5,8})([\d]{2})/', '$1ХХХХХ$6', $text);

Вот и всё, задача поиска номера телефона по шаблону и скрытие символов в номере телефона успешно решена. Получен шаблон регулярного выражения для поиска и замены части телефонного номера на определённые символы. Данный шаблон вы можете свободно использовать в своих будущих PHP скриптах.

Автор: Попов Вадим

16/05/2020 18:00 731

Мини-ПК на Intel Core i9-9880H и M.2 SSD доступен к покупке по цене менее $600

Этот мини-ПК является самым дешевым на Intel Core i9-9880H и M.2 SSD, и Вы можете стать его обладателем. Это уже реальность! За цену чуть менее $600 с бесплатной доставкой в Украину, Россию, Казахстан...

14/04/2020 14:00 1 233

Victoria 5.28 HDD/SSD — программа для оценки состояния, тестирования и ремонта HDD и SSD

Выпущена очередная стабильная версия программы Victoria 5.28 HDD/SSD для диагностики, исследования, тестирования и мелкого ремонта жёстких дисков, SSD-накопителей, карт памяти, а также любых других накопителей...

09/04/2020 13:25 769

Mini-ITX плата Biostar A10N-9830E с процессором AMD FX-9830P

Компания Biostar анонсировала материнскую плату A10N-9830E типоразмера Mini-ITX: решение подходит для построения компактных настольных компьютеров и мультимедийных центров для дома. Плата изначально укомплектована...

Компьютерный мир

Вся информация на страницах сайта предназначена только для личного не коммерческого использования, учёбы, повышения квалификации и не включает призывы к каким либо действиям.

Частичное или полное использование материалов сайта разрешается только при условии добавления ссылки на непосредственный адрес материала на нашем сайте.