I need to filter string to return only "numbers, letters and letters with accents" using PHP.
I've tried many different regex and I could not.
The closest I got was:
$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 _ _ _ ___
Can someone help me? I tried to solve it out for hours, even looking for other questions here.
Add a /u
modifier:
$string = 'Você está bem? 123 # ! @ ...';
echo preg_replace('/[^\w\s+$]/u', '_', $string);
^
See this IDEONE demo
More about the /u
modifier in SO regex documentation:
Pattern and subject strings are treated as UTF-8.