Home > Backend Development > PHP Tutorial > Several ways to get file extensions in php

Several ways to get file extensions in php

WBOY
Release: 2016-07-25 09:04:06
Original
982 people have browsed it
There are several ways to get file extensions in php. Friends in need can refer to them.

Method 1:

function get_extension($file)
{
substr(strrchr($file, '.'), 1);
}
Copy after login

Method 2:

function get_extension($file)
{
return substr($file, strrpos($file, '.')+1);
}
Copy after login

Method 3:

function get_extension($file)
{
return end(explode('.', $file));
}
Copy after login

Method 4:

function get_extension($file)
{
$info = pathinfo($file);
return $info['extension'];
}
Copy after login

Method 5:

function get_extension($file)
{
return pathinfo($file, PATHINFO_EXTENSION);
}
Copy after login

The above methods all seem to work, especially methods 1 and 2. However, if you understand the second parameter of pathinfo, you will have doubts about the above method. If you think about it carefully, the first four methods all have various shortcomings. To obtain the file extension completely correctly, you must be able to handle the following three special situations.

No file extension

The path contains characters., such as /home/test.d/test.txt The path contains the character ., but the file has no extension. Such as /home/test.d/test Obviously: 1 and 2 cannot handle the third situation, and 3 cannot correctly handle the first and third situations. 4 is handled correctly, but when the extension is not present, a warning is issued. Only method 5 is the most correct method. By the way, take a look at the pathinfo method.

The official website introduction is as follows:

$file_path = pathinfo('/www/htdocs/your_image.jpg');

echo "$file_path ['dirname']\n";
echo "$file_path ['basename']\n";
echo "$file_path ['extension']\n";
echo "$file_path ['filename']\n"; // only in PHP 5.2+
Copy after login

It will return an array containing up to four elements, but there will not always be four. For example, if there is no extension, there will be no extension element, so the fourth method will detect the warning. But phpinfo also supports the second parameter. You can pass a constant to specify a certain part of the data to be returned: PATHINFO_DIRNAME - Directory PATHINFO_BASENAME - file name (including extension) PATHINFO_EXTENSION - extension PATHINFO_FILENAME - file name (without extension, PHP>5.2) The values ​​of these four constants are 1, 2, 4, and 8 respectively. At first, I thought I could specify multiple ones through the OR operation: pathinfo($file, PATHINFO_EXTENSION | PATHINFO_FILENAME); Later I found out that it doesn't work, this will only return the smallest of several OR constants. That is, the smallest bit among the four flag bits is a constant.



source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template