2015-12-01 2 views
0

Я использую php preg_replace для дезинфекции моего загружаемого файла, я хочу удалить любые нежелательные символы, такие как (&?/\ ~ {} [] - это также удаление пробелов) и т. Д., Но я не хочу удалять ' «. (полная остановка/период), потому что он удаляет расширение файла.Использование preg_replace для удаления нежелательных символов, но необходимо сохранить '.'

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

Heres мой текущий код, но, как вы можете видеть, он удаляет '.'

$filename = preg_replace("/[^a-zA-Z0-9]/", '', "{$uploadedFile}"); 

Там должен быть ответ, который я пропустил, как это кажется довольно прямо вперед запрос, кто-нибудь знает, что мне нужно бы включить?

ответ

4

Класс символов содержит символы, которые вы хотите разрешить/запретить. Поэтому добавьте . в свой класс символов, и вам должно быть хорошо идти.

$filename = preg_replace("/[^a-zA-Z0-9.]/", '', "{$uploadedFile}"); 

Демо: https://regex101.com/r/bE5qI4/1

Для получения дополнительной информации: http://www.regular-expressions.info/charclass.html

Также дополнительно стоит отметить:

В большинстве регулярных выражений ароматизаторов, только специальные символы или метасимволы внутри класса символов являются закрывающая скобка (]), обратная косая черта(), каретка (^) и дефис (-).

+0

Крис, который работал с удовольствием, я знал, что будет простое решение, спасибо за помощь и ссылку на charclass – gsusonline

Смежные вопросы