Ответ 1
В зависимости от того, насколько вы жадны, вы могли бы сделать что-то вроде:
$pg_url = preg_replace("/[^a-zA-Z 0-9]+/", " ", $pg_url);
Это заменит все, что не является буквой, числом или пространством.
Я использую эти строки кода для удаления всех знаков препинания, символов и т.д., как вы можете видеть их в массиве,
$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
, в котором содержит подчеркивание (_
).