Почему Normalizer :: normallize (PHP) не работает?

Я пытаюсь нормализовать строки с такими символами, как «ééóúú», чтобы «aeiou» упростить поиск.

После ответа на этот вопрос я должен использовать класс Normalizer для этого.

Проблема в том, что функция normalize ничего не делает. Например, этот код:

 <?php echo 'Pérez, NFC: ' . normalizer_normalize('Pérez', Normalizer::NFC) . ' NFD: ' .normalizer_normalize('Pérez', Normalizer::NFD) . ' NFKC: ' .normalizer_normalize('Pérez', Normalizer::NFKC) . ' NFKD: ' .normalizer_normalize('Pérez', Normalizer::NFKD)?> <br/> <?php echo 'aáàä, êëéè,' . ' FORM_C: ' . normalizer_normalize('aáàä, êëéè', Normalizer::FORM_C ) . ' FORM_D: ' .normalizer_normalize('aáàä, êëéè', Normalizer::FORM_D) . ' FORM_KC: ' .normalizer_normalize('aáàä, êëéè', Normalizer::FORM_KC) . ' FORM_KD: ' .normalizer_normalize('aáàä, êëéè', Normalizer::FORM_KD)?> 

показывает:

 Pérez, NFC: Pérez NFD: Pérez NFKC: Pérez NFKD: Pérez aáàä, êëéè, FORM_C: aáàä, êëéè FORM_D: aáàä, êëéè FORM_KC: aáàä, êëéè FORM_KD: aáàä, êëéè 

Что должно делать нормализация?

    — — EDITED

    Это странно. Когда вы копируете и вставляете результат из веб-браузера, а на странице редактора и оригинала я вижу:

     FORM_D: aáàä, êëéè 

    на странице вопроса stackoverflow, которую я вижу (только в режиме Code Sample):

     FORM_D: aáàä, êëéè 

    Related of "Почему Normalizer :: normallize (PHP) не работает?"

    Найдено на этой странице :

    Юникод и интернационализация – большая тема, но вы должны знать хотя бы еще одну важную вещь. По историческим причинам Unicode позволяет альтернативные представления некоторых символов. Например, á может быть записано либо как один прекомпонованный символ с кодовой точкой Unicode U + 00E1, либо как разложенная последовательность буквы a (U + 0061) в сочетании с акцентом '(U + 0301). Для целей сравнения и сортировки два таких представления должны приниматься равными. Чтобы решить эту проблему, библиотека intl предоставляет класс Normalizer. Этот класс, в свою очередь, предоставляет метод normalize (), который вы можете использовать для преобразования строки в нормализованную составленную или разложенную форму. Ваше приложение должно последовательно преобразовывать все строки в одну или другую форму перед выполнением сравнений.

     echo Normalizer::normalize("a´, Normalizer::FORM_C); // á echo Normalizer::normalize("á", Normalizer::FORM_D); // a´ 

    Поэтому устранение акцентов (и подобных) не является целью Normalizer .

    Для функции, которая фактически удаляет акценты, лучшее, что я нашел до сих пор, находится в ядре wordpress: https://core.trac.wordpress.org/browser/trunk/src/wp-includes/formatting.php#L1127 remove_accents ($ строка)

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

    То, что вы ищете, – iconv("UTF-8", "ISO-8859-1//TRANSLIT", $text) .

    http://php.net/manual/de/function.iconv.php

    Будьте осторожны с настройками LC_* ! В зависимости от настройки транслитерация может измениться.