Это будет довольно сложно понять правильно. Конечно, нет встроенной функции для этого.
Большинство примеров, которые я видел для такого рода вещей, работают в противоположном направлении (например, взятие строки с символами с акцентом и замена их эквивалентами ASCII). Там, где я видел, что это было сделано, это всегда был случай предоставления карты символов и их эквивалентов, а также сканирования строки с использованием замен.
На странице справки по PHP для функции strtr()
есть несколько хороших примеров того, что вам нужно сделать, но ваши требования избежать особых исключений сильно усложнят весь процесс. .