Я использую эти строки кода для удаления всех знаков препинания, символов и т. Д., Как вы можете видеть их в массиве,
$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
который включает символы подчеркивания ( _
).