前の記事 ≪:CSSのLineHeightをマスターできるスライド
次の記事 ≫:JavaScriptによって動的にアンチエイリアス化&選択してコピーも可能な...

PHPで文字間の距離を測る関数「similar_text」が便利

2009年07月13日-はてなブックマーク

スポンサード リンク
[PR] 英単語を忘却曲線アプリを使って超効率よく記憶する方法

PHP: similar_text - Manual

PHPで文字間の距離を測る関数「similar_text」が便利。
私はずっとこの関数の存在を知らなかったのですが、similar_textという関数がPHP4から標準で存在するようでした。

使い方は簡単で、similar_text( 文字列1 , 文字列2, 類似度 ); のように実行すると、マッチした文字の数が返るみたいです。
例えば、サンプルコードを見てみましょう

$words = array(
    'psp', 'javascript', 'php', 'spot', 'twitter'
);

$matches = array();

foreach ($words as $word) { 
    $c = similar_text('phpspot', $word, $percent); 
    echo 'phpspot と '.$word.' は '.intval($percent).'% 類似('.$c.'文字一致)しています。'; 
    echo "n"; 
    $matches[intval($percent)] = $word;
}

echo "類似度順に表示nn";
krsort($matches);
print_r($matches);

出力結果

phpspot と psp は 60% 類似(3文字一致)しています。
phpspot と javascript は 23% 類似(2文字一致)しています。
phpspot と php は 60% 類似(3文字一致)しています。
phpspot と spot は 72% 類似(4文字一致)しています。
phpspot と twitter は 14% 類似(1文字一致)しています。

類似度順に表示
Array

    [72] => spot 
    [60] => php 
    [23] => javascript 
    [14] => twitter
)

サンプルは英語で比較していますが、日本語でも問題なく利用できました。
類似文字の候補表示やる類似検索に使うことが出来ますね。検索エンジンでおなじみの、「〜〜ではありませんか?」といったものにも使えそうです。

標準でこういう関数を入れてくるところがPHPの色々な意味ですごい所ですね。

2年まえの2007年に既にエントリで書いてる方が居るようでした。

関連エントリ

関連の記事検索:PHP, チュートリアル, 形態素解析
スポンサード リンク

By.KJ : 2009年07月13日 06:58 livedoor Readerで購読 Twitterに投稿

間違いの指摘をしていただける方はメール、あるいはTwitter/FBでお願いします(クリック)