Функция sanitize_email()
используется в WordPress для очистки email-адресов перед их сохранением или использованием, чтобы удалить недопустимые символы и привести адрес к корректному формату. Это особенно важно для предотвращения ошибок при работе с электронной почтой и для повышения безопасности.
sanitize_email( string $email ): string
Эта функция принимает строку с email-адресом и возвращает очищенный адрес. В процессе работы функция удаляет все символы, не соответствующие допустимому набору символов для email.
Параметры
$email
(строка, обязательный): Email-адрес, который нужно очистить.
Возвращаемое значение
- Возвращает очищенный email-адрес в виде строки или пустую строку, если адрес не является допустимым.
Особенности работы функции
Функция sanitize_email()
работает по правилам, которые включают более ограниченный набор символов, чем RFC 5322, и использует регулярное выражение /[^a-z0-9+_.@-]/i
. После обработки email проходит через фильтр sanitize_email
, что позволяет разработчикам вносить дополнительные изменения в результат.
Простой пример с удалением лишних символов
<?php
$email = ' [email protected] ';
$sanitized_email = sanitize_email($email);
echo $sanitized_email; // Результат: [email protected]
?>
В этом примере удаляются пробелы и восклицательный знак, оставляя только корректный email.
Проверка на допустимый формат email
<?php
$email = 'invalid-email@com';
$sanitized_email = sanitize_email($email);
if ($sanitized_email) {
echo 'Email допустим: ' . $sanitized_email;
} else {
echo 'Неверный формат email';
}
?>
Здесь функция возвращает пустую строку для неверного email, позволяя отфильтровать некорректные адреса.
Удаление нежелательных символов из email с использованием символов RFC
<?php
$email = '[email protected]';
$sanitized_email = sanitize_email($email);
echo $sanitized_email; // Результат: [email protected]
?>
Функция удаляет восклицательный знак, так как он не разрешен в email-адресах.
Фильтрация email через пользовательский фильтр
Вы можете создать фильтр для дальнейшей настройки очищения email-адресов:
add_filter('sanitize_email', 'custom_email_filter');
function custom_email_filter($email) {
return str_replace('+', '', $email); // удаляем символ '+'
}
Этот фильтр удаляет символ +
, который, хотя и разрешен, может быть нежелательным в конкретном проекте.
Заключение
Функция sanitize_email()
особенно полезна при регистрации пользователей, отправке уведомлений по email и других действиях, требующих гарантии, что адрес корректный и безопасный.