Как лучше всего удалить знаки препинания, символы, диакритические знаки, специальные символы? - PullRequest
13 голосов
/ 21 января 2011

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

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

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

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

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

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

, но это не такt удалить недооценку - _

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

Ответы [ 2 ]

26 голосов
/ 21 января 2011

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

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

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

13 голосов
/ 21 января 2011

Использование классов:

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

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

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

...