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.
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’ );
?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’ ]);
?php
$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’ );?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();