在PHP中有levenshtein
- 方法,对吧?
有了它,你可以检查两个字符串的相似程度。
但有没有一种方法可以让你有一个与字符串比较的模式(regEx)?
因此,假设你有这样的模式:L234X567PP
所有数字都是可变的。只有字母必须在那里(并且位于完全相同的位置)
所以现在你有一些字符串:
L000X000PP
L987X123PP
那些应该是有效的。
B000X678XX
这是无效的,但levenshtein
检测到相似性,可能会要求更正错误的字母(可能吗?)
你如何用PHP做到这一点?
答案 0 :(得分:2)
一个有趣的概念,但为什么不尝试这个?
if( preg_match("/^L\d{3}X\d{3}PP$/",$input)) { /* all ok! */ }
elseif( preg_match("/^[A-Z]\d{3}[A-Z]\d{3}[A-Z][A-Z]$/i",$input)) { /* letters were wrong */ }
// ... continue defining possible errors manually
答案 1 :(得分:1)
是的,您可以使用PHP执行此操作。以下是您将用于指定模式的正则表达式:
$regex = '/^L[0-9]{3}X[0-9]{3}PP$/';
$input = 'L000X000PP';
if (preg_match($regex, $input) == 1) {
echo "Matches!";
} else {
echo "Does Not Match!"
}
答案 2 :(得分:1)
这是soundex function
介入的地方。请参阅此代码段:
$str1 = "L000X000PP";
$str2 = "L987X123PP";
$_str1 = soundex ($str1);
$_str2 = soundex ($str2);
var_dump($_str1);
var_dump($_str2);
var_dump($_str1 == $_str2);
string(4) "L210"
string(4) "L210"
bool(true)