$re = '/(?:[aeAE][lI][ -])?(?:[GKQ]h?|Qu)[aeu]([tdz]{1,2}[h\']?)\1?af{1,2}[iy]/';
$str = 'AI Kadafi
Al Gaddafi
Al Ghaddafi
Al Qaddafi
Al Qathafi
Al-Gathafi
Al-Kaddafi
El Gaddafi
El Kadhafi
El Kazzafi
El Qaddafi
El Qathafi
Gadaffi
Gadafi
Gadafy
Gaddafi
Gaddhafi
Gadhafi
Gathafi
Ghadaffi
Ghadafi
Ghaddafi
Ghaddafy
Gheddafi
Kad\'afi
Kadaffi
Kaddafi
Kadhafi
Kazzafi
Khadaffy
Khadafy
Khaddafi
Qadafi
Qaddafi
Qadhafi
Qadhdhafi
Qadthafi
Qathafi
Quathafi
Qudhafi
al Gaddafi
al Ghaddafi
al-Gaddafi
al-Kad\'afi
al-Kadafi
al-Khaddafi
al-Qadafi
al-Qaddafi
al-Qadhafi
al-Qadhdhafi
el Gaddafi
el Gaddafy
el Gadhafi
el Qaddafi
el-Gadhafi';
$subst = "\1\2\3\3\2\1";
$result = preg_replace($re, $subst, $str);
echo "The result of the substitution is ".$result;
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for PHP, please visit: http://php.net/manual/en/ref.pcre.php