(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)
levenshtein — 二つの文字列のレーベンシュタイン距離を計算する
$string1
,$string2
,$insertion_cost
= 1,$replacement_cost
= 1,$deletion_cost
= 1 レーベンシュタイン距離は、string1
を string2
に変換するために置換、挿入、削除 しなければならない最小の文字数として定義されます。アルゴリズムの計算量は、 O(m*n)
です。 ここで、n
および m
はそれぞれ string1
および string2
の長さです。 O(max(n,m)**3)
となる similar_text() よりは良いですが、 まだかなりの計算量です)。
insertion_cost
, replacement_cost
かつ/または deletion_cost
が 1
以外の場合、 変換コストが最も小さいアルゴリズムを採用します。 たとえば、$insertion_cost + $deletion_cost < $replacement_cost
の場合、 置換をせず、挿入と削除が行われます。
string1
レーベンシュタイン距離を計算する文字列のひとつ。
string2
レーベンシュタイン距離を計算する文字列のひとつ。
insertion_cost
挿入のコストを定義します。
replacement_cost
置換のコストを定義します。
deletion_cost
削除のコストを定義します。
この関数は、引数で指定した二つの文字列のレーベンシュタイン距離を返します。
バージョン | 説明 |
---|---|
8.0.0 | これより前のバージョンでは、 引数を2個、または5個指定して呼び出さなければなりませんでした。 |
8.0.0 | これより前のバージョンでは、 引数文字列の一つが 255 文字の制限より長い場合に -1 を返していました。 |
例1 levenshtein() の例
<?php
// スペルミスした単語を入力します
$input = 'carrrot';
// チェックするための単語の配列
$words = array('apple','pineapple','banana','orange',
'radish','carrot','pea','bean','potato');
// まだ最短距離は見つかっていません
$shortest = -1;
// 最短距離を見つけるため単語をループします
foreach ($words as $word) {
// 入力した単語と現在の単語の距離を
上の例の出力は以下となります。
入力した単語: carrrot もしかして: carrot