Регулярное выражение (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 скриптах.

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

Launch the License Manager from the bin folder (by default “C:/Program Files (x86)/Embarcadero/Studio/23.0/bin/LicenseManager.exe“) and delete any trial or beta (Test Field) license that you...

Карта разрушений и жертв российской агрессии в городе Мариуполь, на карте отмечены более 2000 пострадавших домов. На карте отмечены не только фото домов, но свидетельства их жителей, а так же место боевых...

Из-за военных событий 2014 года в Донецке тренер по плаванию Алексей Снежко и его жена вынужденно переехали в Киев. А теперь, в 2022-м, 33-летний Алексей потерял обоих родителей в Мариуполе. Как пережить...

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

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

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