Как убрать акценты и повернуть буквы в «простые» символы ASCII? [дубликаты]

На этот вопрос уже есть ответ здесь:

Какой самый эффективный способ удаления акцентов из строки, например, , становится Eaun ?

Есть простой, встроенный способ, который я пропускаю или регулярное выражение?

44
задан Ripon Al Wasim 26 May 2015 в 05:47
поделиться

2 ответа

Если у вас установлен iconv, попробуйте следующее (в примере предполагается, что ваша входная строка находится в UTF-8):

echo iconv('UTF-8', 'ASCII//TRANSLIT', $string);

(iconv - это библиотека для преобразования между всеми видами кодировок; она эффективна и включена во многие дистрибутивы PHP посредством По умолчанию. Более того, это определенно проще и надежнее, чем пытаться использовать собственное решение (знаете ли вы, что есть «латинская буква N с завитком»? Я тоже .))

52
ответ дан 26 November 2019 в 21:40
поделиться

Вы можете использовать iconv для транслитерации символов в обычный US-ASCII, а затем использовать регулярное выражение для удаления неалфавитных символов:

preg_replace('/[^a-z]/i', '', iconv("UTF-8", "US-ASCII//TRANSLIT", $text))

Другой способ - использовать нормализатор для нормализации до нормализации Сформируйте KD (NFKD) , а затем удалите символы отметки:

preg_replace('/\p{Mn}/u', '', Normalizer::normalize($text, Normalizer::FORM_KD))
13
ответ дан 26 November 2019 в 21:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: