Как получить (извлечь) расширение файла в PHP?

Вы можете просто использовать метод Save:

C #:

string IcoFilename = "C:\\Junk\\Default.ico";
using (System.IO.FileStream fs = new System.IO.FileStream(IcoFilename, System.IO.FileMode.Create))
{
  this.Icon.Save(fs);
}

Visual Basic:

Dim strFilename As String = "C:\Junk\Default.ico"
Using fs As New System.IO.FileStream(strFilename, IO.FileMode.Create)
  Me.Icon.Save(fs)
End Using
679
задан Peter Mortensen 25 January 2019 в 05:58
поделиться

4 ответа

Люди от других языков сценариев всегда думают, что их лучше, потому что у них есть встроенная функция, чтобы сделать это и не PHP (я смотрю на Pythonistas прямо сейчас :-)).

На самом деле, это действительно существует, но немного людей знают это. Встретьтесь pathinfo() :

$ext = pathinfo($filename, PATHINFO_EXTENSION);

Это быстро и встроено. pathinfo() может дать Вам другую информацию, такую как канонический путь, в зависимости от константы, которую Вы передаете ему.

Помнят, что, если Вы хотите смочь иметь дело с не символы ASCII, необходимо установить локаль сначала. НАПРИМЕР:

setlocale(LC_ALL,'en_US.UTF-8');

кроме того, обратите внимание, что это не учитывает содержание файла или тип пантомимы, Вы только получаете расширение. Но это - то, что Вы попросили.

Наконец, обратите внимание, что это работает только на путь к файлу, не путь ресурсов URL, который покрыт с помощью PARSE_URL.

Обладают

1715
ответ дан Sayed Mohd Ali 25 January 2019 в 15:58
поделиться
  • 1
    Это работает хорошо на Интерфейсные реализации. Я хочу получить класс из другого класса и нет никакого простого способа сделать это. – Kangkan 18 November 2011 в 09:50

Ответ электронных сати является корректным способом определить расширение файла.

С другой стороны, вместо того, чтобы полагаться на расширение файлов, Вы могли использовать fileinfo для определения файлов тип MIME.

Вот упрощенный пример обработки изображения, загруженного пользователем:

// Code assumes necessary extensions are installed and a successful file upload has already occurred

// Create a FileInfo object
$finfo = new FileInfo(null, '/path/to/magic/file');

// Determine the MIME type of the uploaded file
switch ($finfo->file($_FILES['image']['tmp_name'], FILEINFO_MIME)) {        
    case 'image/jpg':
        $im = imagecreatefromjpeg($_FILES['image']['tmp_name']);
    break;

    case 'image/png':
        $im = imagecreatefrompng($_FILES['image']['tmp_name']);
    break;

    case 'image/gif':
        $im = imagecreatefromgif($_FILES['image']['tmp_name']);
    break;
}
21
ответ дан Peter Mortensen 25 January 2019 в 05:58
поделиться

pathinfo()

$path_info = pathinfo('/foo/bar/baz.bill');

echo $path_info['extension']; // "bill"
157
ответ дан T.Todua 25 January 2019 в 15:58
поделиться

$ext = preg_replace('/^.*\.([^.]+)$/D', '$1', $fileName);

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

Иначе, мы можем также использовать strrpos для нахождения положения последнего вхождения †˜. ’ в имени файла и инкременте, что положение 1 так, чтобы это взорвало строку от

$ext = substr($fileName, strrpos($fileName, '.') + 1);

0
ответ дан 22 November 2019 в 21:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: