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} добавлено). К сожалению, это нет работает как положено. Когда я повторяю текст, я вижу, что иностранные языки не были удалены (этохорошо) но они были преобразованы в (тот'плохо).
Как мне это исправить?