Вы можете отменить набор символов, используя ^
:
[^a-zA-Z0-9]
^
отменяет только существующий набор символов [...]
, в котором он находится, и применяется только тогда, когда это первый символ внутри набора. Вы можете прочитать больше о наборах запрещенных символов здесь
Итак, наконец:
preg_replace('/[^a-zA-Z0-9]/', '', $input);
Редактировать :
Как отмечено в комментариях ниже, вы также можете добавить квантификатор +
, чтобы последовательных недопустимых символов были заменены в 1 совпадении итерации preg_replace
:
preg_replace('/[^a-zA-Z0-9]+/', '', $input);