Создание сайтов - MD².Ru
+7 (999) 919-32-46

Эффективные методы обнаружения и удаления email-адресов, ссылок и номеров телефонов в MySQL

Эффективные методы обнаружения и удаления email-адресов, ссылок и номеров телефонов в MySQL

Обнаружение и удаление email-адресов, ссылок и номеров телефонов в базе данных

1. Обнаружение записей с email-адресами, ссылками или номерами телефонов

Когда нужно найти данные, содержащие личную или контактную информацию, такую как email-адреса, ссылки на сайты или номера телефонов, можно воспользоваться SQL-запросами с регулярными выражениями. Пример ниже демонстрирует, как это сделать в MySQL:


SELECT `id`, `contacts`, `text` 

FROM `ard` 

WHERE 

    `contacts` REGEXP '[[:alnum:]._%-]+@[[:alnum:].-]+\\.[a-zA-Z]{2,}' -- Email

    OR `text` REGEXP '[[:alnum:]._%-]+@[[:alnum:].-]+\\.[a-zA-Z]{2,}' -- Email

    OR `contacts` REGEXP '(https?://|www\\.)[a-zA-Z0-9.-]+' -- Ссылки

    OR `text` REGEXP '(https?://|www\\.)[a-zA-Z0-9.-]+' -- Ссылки

    OR `contacts` REGEXP '(\\+7|8)?[ -]?\\(?[0-9]{3}\\)?[ -]?[0-9]{3}[ -]?[0-9]{2}[ -]?[0-9]{2}' -- Телефон

    OR `text` REGEXP '(\\+7|8)?[ -]?\\(?[0-9]{3}\\)?[ -]?[0-9]{3}[ -]?[0-9]{2}[ -]?[0-9]{2}'; -- Телефон


Этот запрос ищет:

  • Email-адреса (например, example@mail.com).
  • Ссылки (например, https://example.com или www.example.ru).
  • Телефонные номера (например, +7 (123) 456-78-90 или 8 (495) 123-45-67).

Используя регулярные выражения, можно находить эти данные в полях contacts и text таблицы ard.

2. Удаление email, ссылок и телефонов

После обнаружения записей с нежелательной информацией можно заменить их на пустую строку, чтобы обезопасить базу данных от хранения конфиденциальной информации. Если у вас установлена MySQL версии 8.0+ или MariaDB 10.0+, можно воспользоваться функцией REGEXP_REPLACE().

Пример запроса для удаления email-адресов, ссылок и номеров телефонов:



UPDATE `ard`

SET 

    `contacts` = REGEXP_REPLACE(`contacts`, '[[:alnum:]._%-]+@[[:alnum:].-]+\\.[a-zA-Z]{2,}', ''),

    `text` = REGEXP_REPLACE(`text`, '[[:alnum:]._%-]+@[[:alnum:].-]+\\.[a-zA-Z]{2,}', ''),

    `contacts` = REGEXP_REPLACE(`contacts`, '(https?://|www\\.)[a-zA-Z0-9.-]+', ''),

    `text` = REGEXP_REPLACE(`text`, '(https?://|www\\.)[a-zA-Z0-9.-]+', ''),

    `contacts` = REGEXP_REPLACE(`contacts`, '(\\+7|8)?[ -]?\\(?[0-9]{3}\\)?[ -]?[0-9]{3}[ -]?[0-9]{2}[ -]?[0-9]{2}', ''),

    `text` = REGEXP_REPLACE(`text`, '(\\+7|8)?[ -]?\\(?[0-9]{3}\\)?[ -]?[0-9]{3}[ -]?[0-9]{2}[ -]?[0-9]{2}', '');


Этот запрос удаляет:

  • Email-адреса.
  • Ссылки на сайты.
  • Номера телефонов.

3. Решение для старых версий MySQL (без поддержки REGEXP_REPLACE)

Если ваш сервер работает на старой версии MySQL, которая не поддерживает REGEXP_REPLACE(), можно использовать язык программирования, например, PHP, для обработки данных после их выборки. В приведённом ниже примере используется функция preg_replace() в PHP для замены нежелательных данных:



<?php

$query = "SELECT `id`, `contacts`, `text` FROM `ard` WHERE 1";

$result = mysqli_query($db, $query);


while ($row = mysqli_fetch_assoc($result)) {

    $id = $row['id'];

    $contacts = preg_replace([

        '/[[:alnum:]._%-]+@[[:alnum:].-]+\\.[a-zA-Z]{2,}/', // Email

        '/(https?:\/\/|www\.)[a-zA-Z0-9.-]+/',              // Ссылки

        '/(\+7|8)?[ -]?\(?[0-9]{3}\)?[ -]?[0-9]{3}[ -]?[0-9]{2}[ -]?[0-9]{2}/' // Телефон

    ], '', $row['contacts']);


    $text = preg_replace([

        '/[[:alnum:]._%-]+@[[:alnum:].-]+\\.[a-zA-Z]{2,}/', 

        '/(https?:\/\/|www\.)[a-zA-Z0-9.-]+/', 

        '/(\+7|8)?[ -]?\(?[0-9]{3}\)?[ -]?[0-9]{3}[ -]?[0-9]{2}[ -]?[0-9]{2}/'

    ], '', $row['text']);


    $updateQuery = "UPDATE `ard` SET `contacts` = '$contacts', `text` = '$text' WHERE `id` = $id";

    mysqli_query($db, $updateQuery);

}

?>


Этот код выбирает все записи из таблицы, затем удаляет email-адреса, ссылки и номера телефонов с помощью регулярных выражений в PHP, и обновляет записи в базе данных.

Использование регулярных выражений в SQL и PHP помогает эффективно обнаруживать и удалять конфиденциальную информацию, такую как email-адреса, ссылки и номера телефонов. Такой подход особенно полезен для соблюдения конфиденциальности данных и предотвращения утечки личной информации.


Отзывы (0)

Написать отзыв

Примечание: HTML разметка не поддерживается! Используйте обычный текст.
    Плохо           Хорошо

Теги: MySQL, регулярные выражения, конфиденциальность данных, email-адреса, ссылки, номера телефонов, SQL, обновление данных