似ている2つの文字列を比較し、一致率として数値化できるsimilar_text関数をテストしてみる。
型
文字列1($str1)と文字列2($str2)の一致率を算出する例。$percent=null; similar_text($str1,$str2,$percent);//一致率ポインタを渡す。 echo $percent;// ← 一致率
ソースコード
<table border="1"><thead><tr><th>文字列1</th><th>文字列2</th><th>一致率</th><th>返値</th></tr></thead> <tbody> <?php $data[]=array('neko','neko'); $data[]=array('neko','neko2'); $data[]=array('neko','neo'); $data[]=array('neko','neo2'); $data[]=array('吾輩は猫である。','私は猫である'); $data[]=array('問い合わせ番号','問い合わせNO'); $data[]=array('問合せNO','問い合わせNO'); $data[]=array('お問い合せNo.','問い合わせNO'); $data[]=array('おといあわせ','問い合わせNO'); $data[]=array('問合NO','問い合わせNO'); $data[]=array('あいうえおNo','問い合わせNO'); $data[]=array('あいうえお','問い合わせNO'); $data[]=array('信長の野望 創生期','信長の野望 革新'); $data[]=array('シヴィライゼーション4','シヴィライゼーション4 ウォーロード'); foreach ($data as &$ent){ $v=similar_text($ent[0],$ent[1],$percent);//★ $percent = round($percent,2); echo "<tr><td>{$ent[0]}</td><td>{$ent[1]}</td><td>{$percent}</td><td>{$v}</td></tr>"; } unset($ent); ?> </tbody> </table>
出力
文字列1 | 文字列2 | 一致率 | 返値 |
---|---|---|---|
neko | neko | 100 | 4 |
neko | neko2 | 88.89 | 4 |
neko | neo | 85.71 | 3 |
neko | neo2 | 75 | 3 |
吾輩は猫である。 | 私は猫である | 71.43 | 15 |
問い合わせ番号 | 問い合わせNO | 78.95 | 15 |
問合せNO | 問い合わせNO | 78.57 | 11 |
お問い合せNo. | 問い合わせNO | 74.29 | 13 |
おといあわせ | 問い合わせNO | 51.43 | 9 |
問合NO | 問い合わせNO | 64 | 8 |
あいうえおNo | 問い合わせNO | 35.29 | 6 |
あいうえお | 問い合わせNO | 31.25 | 5 |
信長の野望 創生期 | 信長の野望 革新 | 74.51 | 19 |
シヴィライゼーション4 | シヴィライゼーション4 ウォーロード | 76.54 | 31 |