PHP Transliteration
Solution 1:
You can use iconv, which has a special transliteration encoding.
When the string "//TRANSLIT" is appended to tocode, transliteration is activated. This means that when a character cannot be represented in the target character set, it can be approximated through one or several characters that look similar to the original character.
-- http://www.gnu.org/software/libiconv/documentation/libiconv/iconv_open.3.html
See here for a complete example that matches your use case.
Solution 2:
If you are using iconv then make sure your locale is set correctly before you try the transliteration, otherwise some characters will not be correctly transliterated
setlocale(LC_CTYPE, 'en_US.UTF8');