preg_replace php - manter caracteres especificados + letras de idiomas estrangeiros

Eu preciso de uma função que remova todos os caracteres (não listados no padrão) da cadeia, mas mantém as letras das línguas estrangeiras. Eu sei preg_replace tem \ p "padrão", mas não consigo fazê-lo funcionar por algum motivo.

Eu uso essa função para remover toda a porcaria da string:

$main_content=preg_replace("/[^a-zA-Z0-9`~!@#\$%\^&\*\(\)-_=\+\\|\,<\.>\/\?;:'\"\[\]\s]/", "", $main_content); //remove all symbols that do NOT match these

Simplificando, a função deve manter todas as letras / números padrão e símbolos padrão como + -! @ # $ E assim por diante, e remover toda a porcaria como © ™ e assim por diante. Se existe uma maneira melhor de escrever tal preg_replace do que eu uso, por favor me avise.

Agora, eu quero que a função mantenha letras em idiomas estrangeiros, então modifiquei para

$main_content=preg_replace("/[^\p{L}a-zA-Z0-9`~!@#\$%\^&\*\(\)-_=\+\\|\,<\.>\/\?;:'\"\[\]\s]/", "", $main_content); //remove all symbols that do NOT match these

(Você notará \ p {L} adicionado). Infelizmente, não funcionou como esperado. Quando faço eco do texto, vejo que as línguas estrangeiras não foram removidas (isso é bom), mas elas foram convertidas em (isso é ruim).

Como faço para corrigir isso?

questionAnswers(1)

yourAnswerToTheQuestion