php preg_replace - Behalte bestimmte Zeichen + fremdsprachige Buchstaben

Ich brauche eine Funktion, die alle Zeichen (nicht in Muster aufgeführt) aus der Zeichenfolge entfernt, aber fremdsprachige Buchstaben behält. Ich weiß, dass preg_replace \ p "pattern" hat, aber ich kann es aus irgendeinem Grund nicht zum Laufen bringen.

Ich benutze diese Funktion, um den ganzen Mist aus der Zeichenfolge zu entfernen:

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

Einfach ausgedrückt, sollte die Funktion alle Standardbuchstaben / -zahlen und Standardsymbole wie + -! @ # $ Usw. beibehalten und den ganzen Mist wie © ™ usw. entfernen. Wenn es einen besseren Weg gibt, einen solchen preg_replace zu schreiben, als ich es benutze, lass es mich bitte wissen.

Jetzt möchte ich, dass die Funktion Buchstaben in Fremdsprachen speichert, also habe ich sie auf geändert

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

(Sie werden bemerken, dass \ p {L} hinzugefügt wurde). Leider hat es nicht wie erwartet funktioniert. Wenn ich den Text wiederhole, sehe ich, dass Fremdsprachen nicht entfernt (das ist gut), sondern in (das ist schlecht) konvertiert wurden.

Wie behebe ich das?