I'm ready Google finds. And this is a very difficult and complex task, quite unlike job mb_strtoupper(). Change the character case, everything is simple — there are Unicode characters, there are correspondence tables. But the tables of the "proximity sounding" — no. And something tells me that to create them, regardless of the language context is impossible.
\r
Even in phonetic languages, there is a large arbitrariness in the sound of the same letters depending on the context. And the same Cyrillic alphabet used in many languages, sounding a little different.
\r
What can we say about the characters that koterwas the same sequence of bytes, sound is different for different people using them. Moreover, the sounds of languages with variable tonality is quite difficult to pass through ASCII.
\r
But, in particular, found the table for the Russian:
textpattern.ru/html/transliteration-tables.htm