文字の一致率 | レーベンシュタイン距離 | similar_text

似ている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一致率返値
nekoneko1004
nekoneko288.894
nekoneo85.713
nekoneo2753
吾輩は猫である。私は猫である71.4315
問い合わせ番号問い合わせNO78.9515
問合せNO問い合わせNO78.5711
お問い合せNo.問い合わせNO74.2913
おといあわせ問い合わせNO51.439
問合NO問い合わせNO648
あいうえおNo問い合わせNO35.296
あいうえお問い合わせNO31.255
信長の野望 創生期信長の野望 革新74.5119
シヴィライゼーション4シヴィライゼーション4 ウォーロード76.5431