View Single Post
ישן 11-12-08, 23:01   # 5
SDF
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Sep 2006
מיקום: Negev
הודעות: 270

SDF לא מחובר  

בשביל מה הסוגריים המרובעים והמספרים בסיומת?
למשל עבור:

PHP קוד:
$email "myname@[a.1]"
הביטוי שלך יחזיר:

קוד:
Regex matched
ובכל מקרה, ביטויים רגולריים עבור איימיילים לדעתי לעולם לא יהיו מושלמים.
אבל זה מה יש.

השיטה האלטרנתיבית, גם היא לא מושלמת היא לבדוק האם לדומיין אחריי ה@ יש mx.
אבל היא גם יודעת להגיד מתי כתובת שניראת לגטימית היא לא (למרות שכאן זה גם הצד החלש של השיטה)

משהו כזה:
PHP קוד:
<?php
error_reporting
E_ALL );

$emails = Array();

$emails[] = "SDF@freebsd.co.il"// looks ok, right? but no MX, should fail the check.
$emails[] = "SDF@nix.co.il"// looks ok and passes the check.
$emails[]  = "user@hosts.co.il"// ok
$emails[]  = "user@gmail.com@walla.co.il"// fail
$emails[]  = "user@someunkown"// fail

foreach ( $emails as $email )
{
        
$data explode("@"$email);
        
$ct count($data);
        if ( 
$ct || $ct <= )
        {
                
printf(">> FAIL: Email %s failed the check.\n"$email);
                continue;
        }

        
$hostname $data[1];

        if ( 
getmxrr  $hostname$mxhosts$weight ) )
        {
                if ( !
count$mxhosts ) )
                {
                        
printf(">> FAIL: NO MX for email %s\n"$email);
                }
                else
                {
                        
printf(">> OK: Email %s were OK.\n"$email);
                }
        }
        else
        {
                
printf(">> FAIL: DNS failed for email %s\n"$email);
        }
}
__________________
FreeBSD, a *nix operating system
  Reply With Quote