Регулярное выражение для определения расширения файла - PullRequest
2 голосов
/ 14 апреля 2011

Мне нужно регулярное выражение, которое будет определять имя файла из строки - посмотрите, оканчивается ли оно на .pdf или .PDF - без учета регистра. Должен даже соответствовать .Pdf или любому варианту pdf в случае, если у пользователя грязные имена файлов.

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

Ответы [ 5 ]

9 голосов
/ 14 апреля 2011

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

echo pathinfo("/path/to/myfile.txt", PATHINFO_EXTENSION); //.txt
0 голосов
/ 14 апреля 2011

Если ваша строка состоит из одного имени файла, вот простое решение регулярных выражений:

if (preg_match('/\.pdf$/i', $filename)) {
   // Its a PDF file
}
0 голосов
/ 14 апреля 2011

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

preg_match('/.*\.pdf/i', "match_me.pDf", $matches);

0 голосов
/ 14 апреля 2011

другая возможность - расширить расширение

strtolower(pathinfo("/path/file.pDf", PATHINFO_EXTENSION)) == ".pdf"
0 голосов
/ 14 апреля 2011

как насчет этого. Я не знаю, какой язык вы используете, но вот регулярное выражение для сопоставления чего-либо, заканчивающегося на .pdf

.+([.][Pp][Dd][Ff]){1}

мой плохой. Я полусонный. PHP это так. не знаю php, но это регулярное выражение должно работать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...