designbycode/levenshtein-distance

LevenshteinDistance类提供了一个计算两个字符串之间Levenshtein距离的方法。Levenshtein距离是衡量将一个词转换为另一个词所需的最小单字符编辑(插入、删除或替换)次数的度量。

v1.0.1 2024-07-20 18:20 UTC

README

Latest Version on Packagist Tests Total Downloads

LevenshteinDistance类提供了一个计算两个字符串之间Levenshtein距离的方法。Levenshtein距离是衡量将一个词转换为另一个词所需的最小单字符编辑(插入、删除或替换)次数的度量。

安装

您可以通过composer安装此包

composer require designbycode/levenshtein-distance

方法:calculate

参数

  • mixed $str1: 第一个字符串。
  • mixed $str2: 第二个字符串。

返回值

  • int: 两个字符串之间的Levenshtein距离。

描述

  • 计算两个字符串之间的Levenshtein距离。如果任一输入参数不是字符串,则该方法会抛出TypeError。

用例

  1. 拼写检查:计算用户输入与已知单词列表之间的Levenshtein距离以提出更正建议。
  2. 文本相似度:通过计算Levenshtein距离来衡量两段文本的相似度。
  3. 数据验证:通过计算输入与已知有效值之间的Levenshtein距离来验证用户输入的正确性。

用法

示例1:计算两个字符串之间的Levenshtein距离

$str1 = 'kitten';
$str2 = 'sitting';
$distance = LevenshteinDistance::calculate($str1, $str2);
echo "Levenshtein distance: $distance"; // Output: 3

示例2:处理非字符串输入

$str1 = 'hello';
$nonString = 123;
try {
    LevenshteinDistance::calculate($str1, $nonString);
} catch (TypeError $e) {
    echo "Error: " . $e->getMessage(); // Output: Argument 2 passed to LevenshteinDistance::calculate() must be of the type string
}

示例3:使用Levenshtein距离进行拼写检查

$userInput = 'teh';
$knownWords = ['the', 'tea', 'ten'];
$minDistance = PHP_INT_MAX;
$closestWord = '';

foreach ($knownWords as $word) {
    $distance = LevenshteinDistance::calculate($userInput, $word);
    if ($distance < $minDistance) {
        $minDistance = $distance;
        $closestWord = $word;
    }
}

echo "Did you mean: $closestWord"; // Output: Did you mean: the

测试

composer test

变更日志

请参阅CHANGELOG以获取有关最近更改的更多信息。

贡献

请参阅CONTRIBUTING以获取详细信息。

安全漏洞

请审查我们的安全策略了解如何报告安全漏洞。

致谢

许可

MIT许可(MIT)。请参阅许可文件以获取更多信息。