似ている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 |