Используйте регулярные выражения, чтобы удалить все, кроме [a-zA-Z0-9-] из строки - PullRequest
0 голосов
/ 05 февраля 2012

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

У меня есть следующая строка To-Wage-a-64-Bit-Coup!, и я хочу удалить все, что не является буквой,число или дефис [a-zA-Z0-9], используя preg_replace().Конечным результатом будет удаление восклицательного знака.

Я не знаю всех символов, которые нужно удалить, но я знаю, что нужно оставить.Это для создания SEO-дружественных URL.Не уверен, что мне нужен негативный или позитивный взгляд или, возможно, использовать что-то еще, например preg_match(), для достижения моих целей.

Ответы [ 2 ]

6 голосов
/ 05 февраля 2012
preg_replace("([^a-zA-Z0-9-])","",$subject);

Поместите ^ в начале [...], чтобы свести на нет его эффект.

1 голос
/ 05 февраля 2012
$string = preg_replace("'[^A-Za-z0-9-]'", '', $string);

A-Za-z0-9- соответствует буквам, цифрам и дефису.Символ ^ в начале отрицает этот класс символов, поэтому вместо этого он сопоставляет все, кроме этих символов.

Если это для создания строки, удобной для URL, вам может также потребоваться сначала преобразовать пробелы в гипс, удалив несколько серийиз-за этого может произойти и перевод строки в нижний регистр.

...