Каков наилучший способ удаления знаков препинания, символов, диакритических знаков, специальных символов?

Я использую эти строки кода для удаления всех знаков препинания, символов и т. Д., Как вы можете видеть их в массиве,

$pattern_page = array("+",",",".","-","'","\"","&","!","?",":",";","#","~","=","/","$","£","^","(",")","_","<",">"); $pg_url = str_replace($pattern_page, ' ', strtolower($pg_url)); 

но я хочу сделать это проще, поскольку глупо отображать все материалы, которые я хочу удалить в массиве, поскольку могут быть некоторые другие специальные символы, которые я хочу удалить.

Я думал об использовании регулярного выражения ниже,

 $pg_url = preg_replace("/\W+/", " ", $pg_url); 

но он не удаляет недочет – _

Каков наилучший способ удалить все эти вещи? Может ли это регулярное выражение?

В зависимости от того, насколько вы жадны, вы могли бы сделать что-то вроде:

 $pg_url = preg_replace("/[^a-zA-Z 0-9]+/", " ", $pg_url); 

Это заменит все, что не является буквой, числом или пространством.

Использовать классы:

 preg_replace('/[^[:alpha:]]/', '', $input); 

Удалил бы все, что не считается «персонажем» в текущем установленном языке. Если это пунктуация, вы пытаетесь устранить, класс будет [:punct:] .

\W означает «любой символ без слова» и является противоположностью \w который включает символы подчеркивания ( _ ).