Actions

API16

JMailHelper/isEmailAddress

From Joomla! Documentation

< API16:JMailHelper
Revision as of 17:36, 22 March 2010 by Doxiki (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Replacement filing cabinet.png
This Namespace has been archived - Please Do Not Edit or Create Pages in this namespace. Pages contain information for a Joomla! version which is no longer supported. It exists only as a historical reference, will not be improved and its content may be incomplete.

Contents

Description

Verifies that the string is in a proper e-mail address format.

[Edit Descripton]

Description:JMailHelper/isEmailAddress

Syntax

static isEmailAddress($email)
Parameter Name Default Value Description
$email $email String to be verified.

Returns

boolean True if string has the correct format; false otherwise.

Defined in

libraries/joomla/mail/helper.php

Importing

jimport( 'joomla.mail.helper' );

Source Body

public static function isEmailAddress($email)
{
        // Split the email into a local and domain
        $atIndex        = strrpos($email, "@");
        $domain         = substr($email, $atIndex+1);
        $local          = substr($email, 0, $atIndex);
 
        // Check Length of domain
        $domainLen      = strlen($domain);
        if ($domainLen < 1 || $domainLen > 255) {
                return false;
        }
 
        // Check the local address
        // We're a bit more conservative about what constitutes a "legal" address, that is, A-Za-z0-9!#$%&\'*+/=?^_`{|}~-
        $allowed        = 'A-Za-z0-9!#&*+=?_-';
        $regex          = "/^[$allowed][\.$allowed]{0,63}$/";
        if (!preg_match($regex, $local)) {
                return false;
        }
 
        // No problem if the domain looks like an IP address, ish
        $regex          = '/^[0-9\.]+$/';
        if (preg_match($regex, $domain)) {
                return true;
        }
 
        // Check Lengths
        $localLen       = strlen($local);
        if ($localLen < 1 || $localLen > 64) {
                return false;
        }
 
        // Check the domain
        $domain_array   = explode(".", rtrim($domain, '.'));
        $regex          = '/^[A-Za-z0-9-]{0,63}$/';
        foreach ($domain_array as $domain) {
 
                // Must be something
                if (!$domain) {
                        return false;
                }
 
                // Check for invalid characters
                if (!preg_match($regex, $domain)) {
                        return false;
                }
 
                // Check for a dash at the beginning of the domain
                if (strpos($domain, '-') === 0) {
                        return false;
                }
 
                // Check for a dash at the end of the domain
                $length = strlen($domain) -1;
                if (strpos($domain, '-', $length) === $length) {
                        return false;
                }
        }
 
        return true;
}

[Edit See Also] SeeAlso:JMailHelper/isEmailAddress

Examples

<CodeExamplesForm />