Я хотел бы знать, как вырезать из строки все не алфавитно-цифровые символы, кроме подчеркивания и тире в PHP.
Используйте preg_replace с /[^a-zA-Z0-9_\-]/ в качестве шаблона и '' в качестве замены.
preg_replace
/[^a-zA-Z0-9_\-]/
''
$string = preg_replace('/[^a-zA-Z0-9_\-]/', '', $string);
РЕДАКТИРОВАТЬ
Как сказал Skippy, вы можете использовать модификатор i для нечувствительности к регистру:
i
$string = preg_replace('/[^a-z0-9_\-]/i', '', $string);
Использовать preg_replace:
$str = preg_replace('/[^\w-]/', '', $str);
Первый аргумент preg_replace - это регулярное выражение.Этот содержит:
/
[
^
\w
A-Za-z0-9
_
-
]
Обратите внимание, что это соответствует только дефисам (т.е. -).Он не соответствует подлинным символам тире (- или -).
Принимает a-z, A-Z, 0-9, '-', '_' и пробелы:
$str = preg_replace("/[^a-z0-9\s_-]+/i", '', $tr);
Без пробелов:
$str = preg_replace("/[^a-z0-9_-]+/i", '', $tr);