PHP Преобразование умлаутов, например, из "ue" в "ü" - PullRequest
5 голосов
/ 21 июля 2011

Есть ли способ преобразовать умлауты из представлений ae, Ae, oe, Oe, ue, Ue и ss обратно в исходные умлауты? Важно то, что написание наблюдается как "teuer"! Например, термин "teuer" не должен изменяться в "teür". Спасибо!

Ответы [ 3 ]

3 голосов
/ 21 июля 2011
iconv("utf-8","ascii//TRANSLIT",$input);

Расширенный example

ИЛИ

echo strtr(utf8_decode($input), 
           utf8_decode('ŠŒŽšœžŸ¥µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿ'),
           'SOZsozYYuAAAAAAACEEEEIIIIDNOOOOOOUUUUYsaaaaaaaceeeeiiiionoooooouuuuyy');

См. этот вопрос.

0 голосов
/ 21 июля 2011

Это будет довольно сложно понять правильно. Конечно, нет встроенной функции для этого.

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

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

0 голосов
/ 21 июля 2011

Я предлагаю вам преобразовать каждую перестановку вхождений "и", "и" и так далее.Под каждой перестановкой я подразумеваю, что если есть 3 случая, сначала заменить только первое, затем только второе, затем только третье, затем первое и второе и т. Д.

Далее, проверьте, содержатся ли результаты встандартный словарь проверки орфографии.При этом вам не нужно создавать собственный словарь для исключений.

Список слов можно найти, например, на ftp: //ftp.ox.ac.uk/pub/wordlists/german/words.german.Z

...