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

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

Microsoft пока никак не комментирует ситуацию. Несмотря на то, что поддержка Windows XP закончилась еще 6 лет тому назад, до сих пор эта ОС используется на большом количестве как домашних компьютеров,...

Компания NVIDIA представила аппаратно-программный комплекс Reviewer Toolkit for Graphics Performance, позволяющий проводить мониторинг производительности в играх, численно оценивать задержки вывода изображения...

Samsung объявила о начале массового производства на своей второй производственной линии в корейском Пхёнтхэке первых в отрасли мобильных 16-Гбит чипов DRAM LPDDR5. Для печати используется техпроцесс Samsung...

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

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

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