API15

JMailHelper/isEmailAddress

From Joomla! Documentation

< API15:JMailHelper
Revision as of 13:36, 12 May 2013 by JoomlaWikiBot (talk | contribs) (removing red link to edit, no existant pages)

The "API15" namespace is an archived namespace. This page contains information for a Joomla! version which is no longer supported. It exists only as a historical reference, it will not be improved and its content may be incomplete and/or contain broken links.

Description[edit]

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

[<! removed edit link to red link >]

<! removed transcluded page call, red link never existed >

Syntax[edit]

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

Returns[edit]

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

Defined in[edit]

libraries/joomla/mail/helper.php

Importing[edit]

jimport( 'joomla.mail.helper' );

Source Body[edit]

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;
}

[<! removed edit link to red link >] <! removed transcluded page call, red link never existed >

Examples[edit]

<CodeExamplesForm />