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

Я не эксперт по регулярному выражению:( Я стараюсь, чтобы вырезать все символы из строки кроме числа + буквы и символ подчеркивания и тире. Это правильный синтаксис?:

preg_replace("/[^a-z0-9_-]+/i", "", $string);

3 ответов


да, но его можно немного оптимизировать:

preg_replace('/[^\w-]/', '', $string);

\w соответствует буквенно-цифровым символам и символам подчеркивания. Это имеет дополнительное преимущество, позволяя акцентированные символы, если ваш язык позволяет.



то, что у вас есть, похоже, будет работать. Вы можете добавить пробелы, так как они не являются буквенно-цифровым символом:

preg_replace("/[^a-z0-9_-\s]+/i", "", $string);