Сбросьте все, кроме буквенно-цифровых и европейских символов в PHP

Я работаю над проверкой моего сценария комментирования, и мне нужно разбить все не-буквенно-цифровые символы, кроме тех, которые используются в Западной Европе.

Мой план состоит в том, чтобы повторно вывести все небуквенные символы с помощью:

preg_replace("/[^A-Za-z0-9 ]/", '', $string); 

Но это до сих пор вытесняет всех европейских персонажей и знак, поэтому «Café Rouge» становится «Caf Rouge».

Как добавить массив европейских символов в указанное выше регулярное выражение.

Массив:

 £, €, á, à, â, ä, æ, ã, å, è, é, ê, ë, î, ï, í, ì, ô, ö, ò, ó, ø, õ, û, ü, ù, ú, ÿ, ñ, ß 

Я использую UTF-8

РЕШЕНИЕ:

 $comment = preg_replace('/[^\p{Latin}\d\s\p{P}]/u', '', $comment); 

а также

 $name = preg_replace('/[^\p{Latin}]/u', '', $name); 

$ name также удаляет знаки препинания и пробелы

Спасибо за быстрые ответы

 preg_replace('/[^\p{Latin}\d ]/u', '', $str); 
 echo preg_replace('/[^A-Z0-9 £€áàâä...]/ui', '', $string); 

Важная часть – флаг /u . Убедитесь, что ваш исходный код и $string кодируются в кодировке UTF-8.

Я все еще думаю, что это неправильный подход, потому что он сильно ограничивает то, что могут ввести ваши пользователи, и это будет раздражать некоторых, но что бы ни плавало на вашей лодке … BTW, ваш список не содержит знаков пунктуации.