php preg_replace - zachowaj określone znaki + litery w języku obcym

Potrzebuję funkcji, która usuwa wszystkie znaki (niewymienione we wzorze) z łańcucha, ale zachowuje litery w języku obcym. Wiem, że preg_replace ma „wzorzec”, ale z jakiegoś powodu nie mogę go uruchomić.

Używam tej funkcji, aby usunąć wszystkie bzdury z łańcucha:

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

Mówiąc prościej, funkcja powinna zachować wszystkie standardowe litery / cyfry i standardowe symbole, takie jak + -! @ # $ I tak dalej, i usunąć wszystkie bzdury, takie jak © ™ i tak dalej. Jeśli jest lepszy sposób na napisanie takiego preg_replace niż używam, daj mi znać.

Teraz chcę, aby funkcja zachowywała litery w językach obcych, więc zmodyfikowałem je

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

(Zauważysz, że dodano {L}). Niestety nie zadziałało zgodnie z oczekiwaniami. Kiedy powtarzam tekst, widzę, że języki obce nie zostały usunięte (to dobrze), ale zostały przekonwertowane na (to źle).

Jak to naprawić?

questionAnswers(1)

yourAnswerToTheQuestion