首页 > 解决方案 > 检查字符串是否有给定字符串的变体

问题描述

我有一个文档表格,其中手动注册了电话采访的电子邮件地址。不幸的是,@符号前面的电子邮件部分经常有一些拼写错误。有人可以帮助我如何检查地址是否有此类拼写错误吗?

一些例子:

Name                   Correct mail       Wrong mail
----------------------------------------------------
David Miller           david.miller@      david.miler@      <- l missing
Juliette Smith         juliettesmith@     juleittesmith@    <- ei instead of ie
Peter White            pete.white@         
Peter Miller           peter.miller@      peder.miller@     <- d instead of t   

是否有一个函数可以确定 PHP 中两个字符串之间差异的数量/差异程度?

我的想法是,我可以分别检查名字和姓氏是否出现在电子邮件地址中,最多允许 2 个字符。保险起见最好,所以在“Peter White”示例中也应该有一个警告:即使“r”丢失,电子邮件地址可能仍然是正确的。

不幸的是,我不能简单地采用一个函数来给我两个字符串之间不同的字符数:问题是 peder.miller@ ("d" 而不是 "t") 和 "peder.thisismylonglastname@" 有一个非常不同的数量即使错字相同,字符差异。实际上,我正在寻找一种方法来检查地址中是否出现“peter”(peter、aeter、beter、pe1er、pete 等)的任何变体。

实际上,levenshtein()similar_text()没有真正帮助我:

我可以很容易地计算出levenshtein 值或similar_text 的值。但是这个值很大程度上取决于地址本身的长度。我只想知道名字或姓氏的任何变体是否出现在电子邮件地址中(在@符号之前)。对于“Peter”,这可能是“ eter”、“p_ter”、“pe_er”、“pet_r”、“pete ”、“__ter”、“p __er”、“pe __ r”、“pet __”等。

标签: phpemail

解决方案


推荐阅读