Одна интересная вещь, которую следует отметить из вашего списка возможных вариантов написания, состоит в том, что для содержащегося списка есть только 3 значения Soundex (если вы игнорируете выброс 'Kazzafi')
G310, K310, Q310
Теперь там есть ложные срабатывания ("Годби" также называется G310), но, комбинируя ограниченные удары метафонов, вы также можете их устранить.
<?
$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;
?>
Несколько настроек и, скажем, некоторая транслитерация кириллицы, и у вас будет довольно надежное решение.