Php 匹配mysql表中的重复电子邮件条目(标准格式)

Php 匹配mysql表中的重复电子邮件条目(标准格式),php,mysql,email,Php,Mysql,Email,我有下表,我想匹配的电子邮件。 例如,如果我发现a.b。c@gmail.com从该表中,它应该匹配abc@gmail.com +--------+--------+---------+------------------+------------+-------+ | name | owner | species | email_id | birth | death | +--------+--------+---------+------------------

我有下表,我想匹配的电子邮件。 例如,如果我发现a.b。c@gmail.com从该表中,它应该匹配abc@gmail.com

+--------+--------+---------+------------------+------------+-------+
| name   | owner  | species | email_id         | birth      | death |
+--------+--------+---------+------------------+------------+-------+
| Fluffy | Harold | cat     | abc@gmail.com    | 1993-02-04 | NULL  |
| Buffy  | Harold | dog     | abcd@gmail.com   | 1989-05-13 | NULL  |
+--------+--------+---------+------------------+------------+-------+
目前,我允许电子邮件存储在表上,如*a。bc@gmail.com** 在这种情况下,如果我发现abc@gmail.com它应该匹配a。bc@gmail.com

另一个可能的邮件地址

a.bc@gmail.com
ab.c@gmail.com
abc+1@gmail.com
abc+[.....]@gmail.com

[…]-表示数字

希望这会给你一个想法

$newUserEmail = "test4@example.com";
    $matchEmail=preg_replace('/[^a-zA-Z0-9_@-]/s', '', $newUserEmail);
    $result = $mysqli->query("SELECT * FROM your_table WHERE email_id = '$newUserEmail'");
    echo "num_rows = ".$result->num_rows."\n";
    $result1 = $mysqli->query("SELECT * FROM your_table WHERE email_id = '$matchEmail'");

    echo "matchEmail= ".$result1->num_rows."\n";

    if ($result->num_rows > 0) {
       echo "Duplicate email\n";
       // do something to alert user about non-unique email
    } elseif($result1->matchEmail > 0){
         echo "Duplicate email\n"; // regex match email found 

    }
    else{

      $result = $mysqli->query("INSERT IGNORE INTO your_table "); // make your insert query here 
      if ($result === false) {echo "SQL error:".$mysqli->error;}
    }

您尝试过什么?使用mysql LIKE或REGEXP使用REGEXP是更好的方法,但如何匹配上述要求。因此,您希望删除数字,然后检查电子邮件匹配与否?无论如何实现,如果要删除同一个人的重复条目,请执行以下操作:xiao xiao。ef@gmail.com和ab。cdef@gmail.com可能是两个不同的人。我已经更新了我的问题,请再次查看问题。好主意,但实际上完成所有过程需要一些时间。如果我们处理MySQLpreg_replace('/[^a-zA-Z-]/s',''$newUserEmail)会更好;实际上,它去掉了所有的数字。我允许有数字的电子邮件。bc@gmail.comab。c@gmail.com这两个电子邮件id可能与不同的用户关联。。为什么不使用电子邮件确认并检查唯一的电子邮件id?请告诉我们。