levenshtein

関数の概要

PHPの levenshtein 関数は、2つの文字列間の編集距離(レーベンシュタイン距離)を計算します。この距離は、一方の文字列をもう一方に変換するために必要な最小の編集操作回数(挿入、削除、置換の合計)を示します。文字列の類似度を測る際に便利な関数で、スペルチェックや文字列比較処理でよく使われます。

パラメータの説明

  • string1 (必須): 比較対象の一つ目の文字列。
  • string2 (必須): 比較対象の二つ目の文字列。
  • cost_ins (省略可): 挿入操作のコスト。デフォルトは1。
  • cost_rep (省略可): 置換操作のコスト。デフォルトは1。
  • cost_del (省略可): 削除操作のコスト。デフォルトは1。

戻り値

2つの文字列の編集距離を整数で返します。2つの文字列が同じ場合は0となり、異なるほど大きな値になります。

使用例

基本的な使い方

<?php
$str1 = "kitten";
$str2 = "sitting";

$distance = levenshtein($str1, $str2);
echo "編集距離は: " . $distance;
?>

この例では、「kitten」と「sitting」の編集距離を計算します。結果は3となり、3回の操作で変換可能なことがわかります。

操作コストを変更した例

<?php
$str1 = "book";
$str2 = "back";

$distance = levenshtein($str1, $str2, 1, 2, 1);
echo "編集距離(置換のコストを2に設定)は: " . $distance;
?>

ここでは置換のコストを2に設定しています。置換が多い場合に重みを変えて距離を調整したい場合に使います。

文字列類似度を判定する簡単な例

<?php
function isSimilar($a, $b, $threshold = 2) {
    return levenshtein($a, $b) <= $threshold;
}

if (isSimilar("apple", "appl")) {
    echo "類似しています。";
} else {
    echo "類似していません。";
}
?>

編集距離が2以下なら類似と判定する関数の例です。短い差異を持つ文字列の比較に便利です。

関連する関数

  • similar_text() – 文字列の類似度をパーセンテージで比較します。
  • soundex() – 発音に基づいた文字列比較を行います。

まとめ

levenshtein 関数はPHPで文字列の差異を計測する基本的なツールです。編集距離を知ることでスペルミスの検出や類似文字列の検索など、実務で役立つ文字列操作が可能になります。コスト調整もできるため用途に応じて柔軟に利用できる点も魅力です。ぜひ実際のプロジェクトで活用してみてください。