php preg_replace - сохранить указанные символы + буквы на иностранном языке

Мне нужна функция, которая удаляет все символы (не указанные в шаблоне) из строки, но сохраняет буквы на иностранном языке. Я знаю, что preg_replace имеет \ p "шаблон" Но я могу'По какой-то причине это работает.

Я использую эту функцию, чтобы удалить все дерьмо из строки:

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

Проще говоря, функция должна сохранять все стандартные буквы / цифры и стандартные символы, такие как + -! @ # $ И т. Д., И удалять всю чушь, как © ™ и так далее. Если есть лучший способ написать такое preg_replace, чем я использую, пожалуйста, дайте мне знать.

Теперь я хочу, чтобы функция сохраняла буквы на иностранных языках, поэтому я изменил ее на

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

(Вы заметите, что \ p {L} добавлено). К сожалению, это нет работает как положено. Когда я повторяю текст, я вижу, что иностранные языки не были удалены (этохорошо) но они были преобразованы в  (тот'плохо).

Как мне это исправить?

Ответы на вопрос(1)

Ваш ответ на вопрос