is_email () VS sanitize_email ()

Если я разрешаю пользователю вводить адрес электронной почты для сохранения в базу данных, следует ли использовать is_email() или sanitize_email() ?

Ex.

 update_user_meta( $user_id, $social_site, sanitize_email( $_POST[$user_input] ) ); 

is_email() возьмет предоставленную строку (адрес электронной почты) и проверит ее, чтобы убедиться, что она действительно является адресом электронной почты и что в ней нет незаконных символов. Это просто ничего не изменит в строке, которую вы указали, но верните либо true если строка передает все проверки функции или false если это не так.

sanitize_email() возьмет предоставленную строку и вычеркнет любые символы, которые не разрешены в адресе электронной почты, и возвращают только символы, которые разрешены.

Поэтому, если у вас есть строка, которая должна быть электронной почтой, например: user"!@provider.com

is_email() возвращает false поскольку строка содержит символы, которые не разрешены в адресе электронной почты.

sanitize_email() вернет user!@provider.com

Если вы берете user"!@provider.com и сначала запускаете его через функцию sanitize_email() а затем через is_email() он тогда возвращает true в этом случае, поскольку все недопустимые символы удаляются из строки, и это позволяет чтобы передать is_email() .

Я бы предложил использовать оба метода is_email (), чтобы сначала проверить, правильно ли он отправил правильный адрес электронной почты и до того, как он что-либо внес в базу данных, действительно ли это безопасно, выполнив функцию sanitize_email () в самой последней возможной точке вашего скрипта.