Skip to content
← Back to Snippets
Code

Validate an Email Address

Validates one email address with filter_var(), lowercases the domain portion, and returns a clear validation result.

Purpose

Validates one email address with filter_var(), lowercases the domain portion, and returns a clear validation result.

Snippet details

ContextValidationLevelPracticalCopy-and-paste statusMarked safe after review.

Categories

  • Forms and Validation

Code

<?php

/*
 * Copyright (c) 2026 Jeffery L. Paris <jparis@phpog.com>.
 * Free for personal and internal use. Paid project use requires visible credit
 * to Jeffery L. Paris. Corporate use requires a paid license fee unless a
 * separate written license states otherwise.
 */

/**
 * Validate an Email Address.
 *
 * Purpose:
 * Validates one email address and normalizes the domain portion.
 *
 * @param string $email Raw email address.
 * @return array Validation result.
 */
function ogSnippetValidateEmailAddress(string $email): array {
	$result = array(
		'valid' => false,
		'email' => '',
		'message' => 'Email address is invalid.'
	);

	$email = trim($email);

	if ($email === '') {
		$result['message'] = 'Email address is required.';
		return $result;
	}

	if (filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
		return $result;
	}

	$parts = explode('@', $email);

	if (count($parts) !== 2) {
		return $result;
	}

	$local_part = $parts[0];
	$domain_part = strtolower($parts[1]);
	$normalized_email = $local_part.'@'.$domain_part;

	$result['valid'] = true;
	$result['email'] = $normalized_email;
	$result['message'] = 'Email address is valid.';

	return $result;
}

$email_report = ogSnippetValidateEmailAddress('ripley@Weyland-Yutani.example');

echo 'Email valid: '.$email_report['message'];