Я не думаю, что есть стандартная практика, как справиться с этим, кроме как не допустить + все вместе.С другой стороны, предотвращение этого не кажется полезным .Создание совершенно нового адреса электронной почты на каком-либо бесплатном сервисе займет не более нескольких минут, если это действительно необходимо тому, кого вы собираетесь заблокировать.
Следует также отметить, чтоМногие другие провайдеры электронной почты также предоставляют субадресацию, но не с использованием знака плюс, а с дефисом (Yahoo, Runbox и т. д.), и попытка заблокировать это вызовет проблемы только у тех, у кого только адрес электронной почтыс дефисом в нем.Это война, которую вы уже проиграли.
Кроме того, если вы отфильтровываете знаки плюс, вы больше не соответствует стандарту RFC3696 :
Точное правило заключается в том, что любой символ ASCII, включая управляющие символы, может отображаться в кавычках или в строке в кавычках. [...]
Без кавычек локальные части могут состоять из любой комбинации буквенных символов, цифр или любых специальных символов
! # $ % & ' * + - / = ? ^ _ ` . { | } ~
Но вы можете просто лишить плюса, если будете настаивать.
$emails = array('bob@gmail.com','bob+1@gmail.com','bob+hello@gmail.com');
foreach ($emails as &$email)
{
list($identifier, $domain) = explode('@',$email);
list($name) = explode('+',$identifier);
$email = $name."@".$domain;
}
print_r($emails);
Вышесказанное даст вам
Array
(
[0] => bob@gmail.com
[1] => bob@gmail.com
[2] => bob@gmail.com
)