php - 检查字符串是否有给定字符串的变体
问题描述
我有一个文档表格,其中手动注册了电话采访的电子邮件地址。不幸的是,@符号前面的电子邮件部分经常有一些拼写错误。有人可以帮助我如何检查地址是否有此类拼写错误吗?
一些例子:
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 __”等。