Detect extension file php

php how to detect the extension of a file

You probably want the MIME types, not the extension (which is unreliable). The MIME type is a portable way to identify the file type. Examples are image/jpeg and text/html .

First, check whether that site tells you the mime type in the HTTP response. You want to look for the Content-Type header.

If that isn’t useful, you can use finfo_file or finfo_buffer to guess mime types. These are available from PECL, or in PHP 5.3 and later.

In older versions of PHP, you can use mime_content_type .

Read More

If you don’t have to use curl, here is how you could do it using straight PHP.

Note: It is possible to set headers, credentials etc. while using fopen() to fetch URL’s using the HTTP context options.

 1) < $this->mimetypes[$minfo[0]] = trim(array_shift(explode(' ', $minfo[1]))); > > > // download $url and save as $prefix while automatically // determining appropriate extension. // @param $url - URL to download // @param $prefix - Filename to save to (without extension) // @return filename used public function get($url, $prefix) < $mimetype = NULL; $filename = NULL; $src = fopen($url, 'r'); if (! $src) < throw new Exception('Failed to open: ' . $url); >$meta = stream_get_meta_data($src); foreach($meta['wrapper_data'] as $header) < if (preg_match('/^content-type: ([^\s]+)/i', $header, &$matches)) < $mimetype = $matches[1]; break; >> $extension = @$this->mimetypes[$mimetype]; // default to .bin if the mime-type could not be determined $filename = sprintf('%s.%s', $prefix, $extension ? $extension : 'bin'); $dst = fopen($filename, 'w'); if (! ($dst && stream_copy_to_stream($src, $dst) && fclose($src) && fclose($dst))) < throw new Exception('An error occurred while saving the file!'); >return $filename; > > $d = new DownloadWithExtension(); $url = 'http://example.com?file=3838438'; $filename = $d->get($url, '/tmp/myfile'); print(sprintf("Saved %s as %s\n", $url, $filename)); 

If you’re in a Un*x hosted environment, you can call exec(‘file ‘ . $file_path, $result) to have the system do an analysis of the file. Check $result for it’s answer.

Читайте также:  Анимация переходов между страницами css

It will have something like:

Filename: ASCII text
Filename: PDF document, version 1.3

More Answer

  • How to include/require a php file from c/c++ php extension passing variables to userspace scope?
  • How can I use the PHP File api to write raw bytes?
  • PHP how to detect the change of variable?
  • How to upload a file using php to the parent directory
  • In PHP how can access a property in an included file that was defined in the calling file?
  • How to force download different type of extension file php
  • How to copy the only particular extension file in php?
  • How to hide PHP file extension without using .htaccess
  • PHP : Excel cannot open the file because the file format or file extension is not valid
  • How to find the file size by url in php script
  • How to run a php file with wamp from outside of the www directory?
  • How to load php file without php extension
  • How to change the request handler using the PECL PHP solr extension
  • How to use php to retrieve all the file name in a specific folder
  • How to use PHP to return only the first part of my file name, not the extension, «.php»
  • How can i get the function name from a .php file ? Need a php script
  • How do I determine the server path of a file of a class file, from that class’s parent class in PHP
  • how to execute php file from android class using the Post method
  • How to fix Random php code is prepended on each php file in the server
  • How to modify the node values of a XML file located at server end using PHP
  • how to load a php file to just display the contents of the file, not executing it?
  • PHP is including relative to the URL path and not the file path, how do you change this?
  • How do I change the default file permissions for log files created by PHP Monologger?
  • How to get the data from another php file by selecting an option in a dropdown list?
  • PHP and shared_memory: how to detect ‘free space’ in the shared memory segment?
  • how to begin streaming while ffmpeg is still transcoding the file in PHP
  • How to install the OCI8 PHP extension on Mac OS X 10.8 Mountain Lion
  • How to make a PHP file parse some data without the need for a user to stay on a page
  • How to Count the number of active user in a website without using database or saving number in file using PHP
  • How can I detect with php that the user uses an ipad when my user agent doesnt conatin something like that
  • How to access PHP Functions outside of the current PHP File when using Ajax?
  • php exporting xls: the file format and extension of don’t match
  • how to convert the file content to byte array with php
  • How to parse a PHP project, find a function occurrences in code and detect the called parameter in each call?
  • How to force the proper file extension in the «save as» dialog? (.jpg instead of .php)
  • How to get the original URI extension using PHP Tonic?
  • How to detect the line where an error was originated and not where the error was executed. PHP
  • how to update a multi spreadsheet xls file in php on the fly?
  • How to store the encryption keys securely in php code file
  • How can i serve a file through a php script and make it behave exactly the same as a direct link to the file?
  • How to run a .jar or a .apk file on the Android with php or javascript
  • File extension or file is not valid at the time export excel using spout library in php
  • How to make a live PHP file send data back to the local machine?
  • Check file extension before submitting the form to PHP
  • php how to move up the directory until a specific file
  • How to sort a text file by the second index in each line using php

More answer with same ag

  • Setting a date/time using Symfony PHPUnit bridge ClockMock
  • A tidy way to clean your URL variables?
  • Finding the values in an array that have the most occurrences
  • i have angular JS form it is inserting data successfully into database but not showing in table listing below the form
  • PHP ARRAY, there are many times the same valu inside
  • Form submit dialog
  • How to display one block among two block in Drupal?
  • PHP strtotime not recognizing «2012-W11» on new server
  • Does HTML5 make Javascript gaming safer (more secure)?
  • Interface and Traits does not work properly
  • An odd assignment about adding dashes to strings. PHP
  • Is there a way to identify forms if using the button element to submit?
  • How to get pixel along circumfrence
  • Where can I download php_dbase.dll?
  • WordPress, Custom post Type give 404 if more than 1 post type
  • putting a new line in the code below
  • Strange working php code regarding protected visibility
  • Yii2 construct a query with union and limit
  • Codeigniter loading a library in a static function
  • calculating the end of a decade
  • Ajax success function returning [object, object]
  • £ still appearing in email even after putting html and php to UTF-8
  • Convert Binary to File Using PHP
  • How to save string entered in HTML form to text file
  • Laravel groupBy doesn’t work properly with PostgreSQL
  • PHP 7 connecting to Informix database
  • What logic should contain the View of a MVC Design?
  • How to use S3 (AWS SDK v3) to cache images generated by LiipImagineBundle
  • AWS Cloudfront Signed Cookie not working on alternate domain
  • PECL_HTTP not recognised php ubuntu
  • Call a function in each action of controller in yii2?
  • Masking credit card number
  • PHP Regular expression to capture code
  • PHP Autoformat Paragraph tags
  • Base directory for browscap path
  • Sending encrypted JSON data in IOS to PHP for decryption
  • Modify Stack in the Zend HeadScript View Helper
  • LinkedIn API, Reading groups posts issue
  • Where-ing in discriminated tables
  • How to redirect HTTP to HTTPS using XAMPP
  • Unable to connect the Database and Handle the POST request
  • How can I track each «step» of a program in PHP?
  • Define blocks not parsing
  • how do you not replace / by — when changing the Url key of products in magento 2
  • Sanitize POST htmlentities or plus stripslashes and strip_tags
  • Convert text to links — ignore image src
  • how to do a check for a current url in php
  • Add spaces around semi-colon, unless it’s part of an HTML entity
  • .htaccess: Redirect domain to https not working if also changing the root path
  • How to get variable in included file in static class

Источник

pathinfo

pathinfo() возвращает информацию о path в виде ассоциативного массива или строки, в зависимости от flags .

Замечание:

Подробнее о получении информации о текущем пути, можно почитать в разделе Предопределённые зарезервированные переменные.

Замечание:

pathinfo() оперирует входной строкой и не знает фактическую файловую систему или компоненты пути, такие как » .. «.

Замечание:

Только в системах Windows символ \ будет интерпретироваться как разделитель каталогов. В других системах он будет рассматриваться как любой другой символ.

pathinfo() учитывает настройки локали, поэтому для корректной обработки пути с многобайтными символами должна быть установлена соответствующая локаль с помощью функции setlocale() .

Список параметров

Если указан, то задаёт, какой из элементов пути будет возвращён: PATHINFO_DIRNAME , PATHINFO_BASENAME , PATHINFO_EXTENSION и PATHINFO_FILENAME .

Если flags не указан, то возвращаются все доступные элементы.

Возвращаемые значения

Если параметр flags не передан, то возвращаемый ассоциативный массив ( array ) будет содержать следующие элементы: dirname , basename , extension (если есть) и filename .

Замечание:

Если path содержит больше одного расширения, то PATHINFO_EXTENSION возвращает только последний и PATHINFO_FILENAME удаляет только последнее расширение. (смотрите пример ниже).

Замечание:

Если path не содержит расширения, то не будет возвращён элемент extension (смотрите ниже второй пример).

Замечание:

Если basename параметра path начинается с точки, то все последующие символы интерпретируются как расширение файла ( extension ) и имя файла filename будет пустым (смотрите третий пример).

Если указан параметр flags , будет возвращена строка ( string ), содержащая указанный элемент.

Примеры

Пример #1 Пример использования функции pathinfo()

$path_parts = pathinfo ( ‘/www/htdocs/inc/lib.inc.php’ );

echo $path_parts [ ‘dirname’ ], «\n» ;
echo $path_parts [ ‘basename’ ], «\n» ;
echo $path_parts [ ‘extension’ ], «\n» ;
echo $path_parts [ ‘filename’ ], «\n» ;
?>

Результат выполнения данного примера:

/www/htdocs/inc lib.inc.php php lib.inc

Пример #2 Пример с pathinfo() , показывающий разницу между null и отсутствием расширения

$path_parts = pathinfo ( ‘/path/emptyextension.’ );
var_dump ( $path_parts [ ‘extension’ ]);

$path_parts = pathinfo ( ‘/path/noextension’ );
var_dump ( $path_parts [ ‘extension’ ]);
?>

Результатом выполнения данного примера будет что-то подобное:

string(0) "" Notice: Undefined index: extension in test.php on line 6 NULL

Пример #3 Пример pathinfo() для файла, начинающегося с точки

Результатом выполнения данного примера будет что-то подобное:

Array ( [dirname] => /some/path [basename] => .test [extension] => test [filename] => )

Пример #4 Пример использования pathinfo() с разыменованием массива

Параметр flags не является битовой маской. Может быть предоставлено только одно значение. Чтобы выбрать только ограниченный набор разобранных значений, используйте деструктуризацию массива следующим образом:

[ ‘basename’ => $basename , ‘dirname’ => $dirname ] = pathinfo ( ‘/www/htdocs/inc/lib.inc.php’ );

var_dump ( $basename , $dirname );
?>

Результатом выполнения данного примера будет что-то подобное:

string(11) "lib.inc.php" string(15) "/www/htdocs/inc"

Смотрите также

  • dirname() — Возвращает имя родительского каталога из указанного пути
  • basename() — Возвращает последний компонент имени из указанного пути
  • parse_url() — Разбирает URL и возвращает его компоненты
  • realpath() — Возвращает канонизированный абсолютный путь к файлу

Источник

Как узнать расширение файла средствами PHP

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

$uploadImage = $_FILES['image']; $uploadImageName = trim(strip_tags($uploadImage['name'])); $uploadImageTmpName = trim(strip_tags($uploadImage['tmp_name'])); // Способ #1 $extension = pathinfo($uploadImageName, PATHINFO_EXTENSION); // Способ #2 $extension = pathinfo(parse_url($uploadImageName, PHP_URL_PATH), PATHINFO_EXTENSION); // Способ #3 $extension = substr($uploadImageName, strrpos($uploadImageName, '.') + 1); // Способ #4 $extension = substr(strrchr($uploadImageName,'.'), 1);

Узнать расширение файла используя PHP функции

// Способ #1 function getExtension($filename) < return preg_replace('/^.*\.(.*)$/U', '$1', $filename); >// Способ #2 function getExtension($filename) < return preg_match('/\.(.*)$/U', $filename, $matches) ? $matches[1]: ''; >// Способ #3 function get_file_extension($file_path) < $basename = basename($file_path); // получение имени файла if ( strrpos($basename, '.')!==false ) < // проверка на наличии в имени файла символа точки // вырезаем часть строки после последнего символа точки в имени файла $file_extension = substr($basename, strrpos($basename, '.') + 1); >else < // в случае отсутствия символа точки в имени файла возвращаем false $file_extension = false; >return $file_extension; >

Узнать расширение файла используя класс PHP SplFileInfo

$file = new SplFileInfo($uploadImageName); $extension = $file->getExtension();

Источник

Оцените статью