PHP Classes

File: src/DataTypes/EmailValidator.php

Recommend this page to a friend!
  Packages of Amirreza Ebrahimi   HeroQR Powerful PHP QR Code Library to generate PNG, SVG, PDF, Logos Ready to Use with Laravel   src/DataTypes/EmailValidator.php   Download  
File: src/DataTypes/EmailValidator.php
Role: Class source
Content type: text/plain
Description: Class source
Class: HeroQR Powerful PHP QR Code Library to generate PNG, SVG, PDF, Logos Ready to Use with Laravel
Generate QR code images in several formats
Author: By
Last change:
Date: 22 days ago
Size: 1,064 bytes
 

Contents

Class file image Download
<?php

namespace HeroQR\DataTypes;

use
HeroQR\Contracts\DataTypes\AbstractDataType;

/**
 * Provides robust validation for email addresses.
 *
 * Validates format, applies a regex, checks domain MX/A records,
 * and blocks blacklisted domains.
 */
class EmailValidator extends AbstractDataType
{
    public static function
validate(string $data): bool
   
{
       
$email = trim($data);

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

        if (!
preg_match('/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/', $email)) {
            return
false;
        }

       
$domain = strtolower(substr(strrchr($email, '@'), 1));

       
$blacklist = ['example.com', 'test.com', 'invalid.com', 'nonexistentdomain.xyz'];
        foreach (
$blacklist as $blockedDomain) {
            if (
str_ends_with($domain, $blockedDomain)) {
                return
false;
            }
        }

        if (!
checkdnsrr($domain, 'MX') && !checkdnsrr($domain, 'A')) {
            return
false;
        }

        return
true;
    }
}