PDA

View Full Version : نحوه استفاده از تابع preg_match



engmmrj
شنبه 18 آذر 1391, 18:55 عصر
من با این تابع مثلا میخوام ایمیل رو شبیه سازی کنم چه جوری این کارو کنم؟

Taimaz_222
شنبه 18 آذر 1391, 19:14 عصر
به کد زیر نگاه بنداز فک میکنم مشکلت حل شه :




<?php
function email_valid($temp_email) {
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;
}
}
?>

به کامنت هایی که بین خطوط بیان شده دقت کن تا بهتر کدها رو متوجه بشی.
موفق و پیروز.

رضا قربانی
شنبه 18 آذر 1391, 19:20 عصر
اینجا هم کمکت می کنه
http://barnamenevis.org/showthread.php?358191-%D8%AF%D9%86%DB%8C%D8%A7%DB%8C-%D8%B1%DA%AF%D9%88%D9%84%D8%A7%D8%B1-%D8%A7%DA%A9%D8%B3%D9%BE%D8%B1%D8%B4%D9%86-Regular-expression

engmmrj
شنبه 18 آذر 1391, 19:37 عصر
"/[^a-zA-Z0-9-_@.!#$%&'*\/+=?^`{\|}~]/" اینا چی هستن؟

payamsp
شنبه 18 آذر 1391, 22:02 عصر
تابع preg_match به شما این امکان رو میده تا با استفاده عبارات با فاعده یا regular expersion اعتبار سنجی رو انجام بدید .
اون مرودی هم که فرمودید یک pattern هست که پست الکترونیکی بر اساس آن اعتبار سنجی می شود
برای نوشتن چنین پترن هایی باید با قواعد regular expersion آشنا باشید
توی نت مطالب زیادی برای یادگیریش وجود داره کافیه سرچ کنید