لديك حساب بالفعل؟ دخول
دخول  سجل الأن 
شرح دالة preg_match للتحقق من الايميل ؟
كيف استخدم دالة preg_match للتحقق من الايميل مع العلم اني رايت امثلة في الانترنت ولكن لم افهم معنى الرموز المستخدمة مع هذه الدالة؟
تاريخ البداية: 9 / مايو / 2012 الساعة 4:54 اخر نشاط: 9 / مايو / 2012 الساعة 13:47 php preg_match email
2 إجابات
ان كنت تبحث عن البساطة
function Email($string){
	return (bool)preg_match("/^([a-z0-9])(([-a-z0-9._])*([a-z0-9]))*\@([a-z0-9])(([a-z0-9-])*([a-z0-9]))+(\.([a-z0-9])([-a-z0-9_-])?([a-z0-9])+)+$/i", $string);
}
فهى تعتمد على التعابير القياسية regular expression

بواسطة: علاء
منذ: 9 / مايو / 2012 الساعة 8:54

دالة preg_match تستعمل لاستخراج شىء معين من نص او شىء كهذا اما للتحقيق من الاميل يمكنك استعمال اشياء اخرى بديلة مثل
filter_var('[email protected]', FILTER_VALIDATE_EMAIL)
ودالة preg_match تستعمل ايضا لتتحقق من الاميل عن طريق شىء كهذا
<?php
function email_valid($temp_email) {
######## Three functions to HELP ########
        function valid_dot_pos($email) {
            $str_len = strlen($email);
            for($i=0; $i<$str_len; $i++) {
                $current_element = $email[$i];
                if($current_element == "." && ($email[$i+1] == ".")) {
                    return false;
                    break;
                }
                else {

                }
            }
            return true;
        }
        function valid_local_part($local_part) {
            if(preg_match("/[^a-zA-Z0-9-_@.!#$%&'*\/+=?^`{\|}~]/", $local_part)) {
                return false;
            }
            else {
                return true;
            }
        }
        function valid_domain_part($domain_part) {
            if(preg_match("/[^a-zA-Z0-9@#\[\].]/", $domain_part)) {
                return false;
            }
            elseif(preg_match("/[@]/", $domain_part) && preg_match("/[#]/", $domain_part)) {
                return false;
            }
            elseif(preg_match("/[\[]/", $domain_part) || preg_match("/[\]]/", $domain_part)) {
                $dot_pos = strrpos($domain_part, ".");
                if(($dot_pos < strrpos($domain_part, "]")) || (strrpos($domain_part, "]") < strrpos($domain_part, "["))) {
                    return true;
                }
                elseif(preg_match("/[^0-9.]/", $domain_part)) {
                    return false;
                }
                else {
                    return false;
                }
            }
            else {
                return true;
            }
        }
        // trim() the entered E-Mail
        $str_trimmed = trim($temp_email);
        // find the @ position
        $at_pos = strrpos($str_trimmed, "@");
        // find the . position
        $dot_pos = strrpos($str_trimmed, ".");
        // this will cut the local part and return it in $local_part
        $local_part = substr($str_trimmed, 0, $at_pos);
        // this will cut the domain part and return it in $domain_part
        $domain_part = substr($str_trimmed, $at_pos);
        if(!isset($str_trimmed) || is_null($str_trimmed) || empty($str_trimmed) || $str_trimmed == "") {
            $this->email_status = "You must insert something";
            return false;
        }
        elseif(!valid_local_part($local_part)) {
            $this->email_status = "Invalid E-Mail Address";
            return false;
        }
        elseif(!valid_domain_part($domain_part)) {
            $this->email_status = "Invalid E-Mail Address";
            return false;
        }
        elseif($at_pos > $dot_pos) {
            $this->email_status = "Invalid E-Mail Address";
            return false;
        }
        elseif(!valid_local_part($local_part)) {
            $this->email_status = "Invalid E-Mail Address";
            return false;
        }
        elseif(($str_trimmed[$at_pos + 1]) == ".") {
            $this->email_status = "Invalid E-Mail Address";
            return false;
        }
        elseif(!preg_match("/[(@)]/", $str_trimmed) || !preg_match("/[(.)]/", $str_trimmed)) {
            $this->email_status = "Invalid E-Mail Address";
            return false;
        }
        else {
            $this->email_status = "";
            return true;
        }
}
?> 

بواسطة: MacOS
منذ: 9 / مايو / 2012 الساعة 8:50

وصلت الفكرة شكرا على الاجابة ولكني افكر في استخدام التحقق عن طريق javascript سيكون اسرع على المتصفح
9 / مايو / 2012 الساعة 13:14

نصيحة اياك ان تستعمل الجافا سكربت فقط للتأكيد من اى شىء لان يمكن غلقها من المتصفح ويوجد انظمة لا تدعم اصلا الجافا سكربت وبذلك لن يكون هناك تأكيد
9 / مايو / 2012 الساعة 13:46

أنشر اجابتك

xهل تريد الاجابة عن هذا السؤال؟ من فضلك سجل دخول او اشترك لتتمكن من الاجابة