Мне нужно отфильтровать строку, чтобы вернуть только «цифры, буквы и буквы с акцентами», используя PHP.
Я пробовал много разных регулярных выражений, и я не мог.
Самое близкое, что я получил, было:
$string = 'Você está bem? 123 # ! @ ...';
echo preg_replace('/[^\w\s+$]/', '_', $string);
// Return: Voc__ est__ bem_ 123 _ _ _ ___
// But I need to return: Você_está_bem_123 _ _ _ ___
Кто-нибудь может мне помочь? Я пытался решить это часами, даже ища другие вопросы здесь.
Добавить /u
модификатор:
$string = 'Você está bem? 123 # ! @ ...';
echo preg_replace('/[^\w\s+$]/u', '_', $string);
^
Увидеть это демо IDEONE
Подробнее о /u
модификатор в документации регулярных выражений SO:
Шаблонные и предметные строки рассматриваются как UTF-8.
Других решений пока нет …