潜在的なスペルのリストから注意すべき1つの興味深いことは、含まれているリストには3つのSoundex値しかないことです(外れ値「Kazzafi」を無視した場合)。
G310、K310、Q310
現在、そこには誤検知があります( 'Godby'もG310です)が、限定されたmetaphoneヒットも組み合わせることで、それらを排除できます。
<?
$soundexMatch = array('G310','K310','Q310');
$metaphoneMatch = array('KTF','KTHF','FTF','KHTF','K0F');
$text = "This is a big glob of text about Mr. Gaddafi. Even using compound-Khadafy terms in here, then we might find Mr Qudhafi to be matched fairly well. For example even with apostrophes sprinkled randomly like in Kad'afi, you won't find false positives matched like godfrey, or godby, or even kabbadi";
$wordArray = preg_split('/[\s,.;-]+/',$text);
foreach ($wordArray as $item){
$rate = in_array(soundex($item),$soundexMatch) + in_array(metaphone($item),$metaphoneMatch);
if ($rate > 1){
$matches[] = $item;
}
}
$pattern = implode("|",$matches);
$text = preg_replace("/($pattern)/","<b>$1</b>",$text);
echo $text;
?>
いくつかの微調整、そしてキリル文字の音訳を言うと、かなり堅牢なソリューションになります。