Подтвердить что ты не робот

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

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

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

$pg_url = str_replace($pattern_page, ' ', strtolower($pg_url));

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

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

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