Лучший способ увидеть, имеет ли файл определенное расширение

Я делаю это прямо сейчас в своем коде, чтобы узнать, имеет ли файл имя расширение .txt, но я думаю, что он в основном проверяет, содержит ли он .txt и не обязательно заканчивается на .txt. Есть ли у php лучший способ проверки расширений вместо использования strpos?

strpos($filename,'.txt') !== false
5 ответов

Вы можете разрешить несколько расширений, добавив в массив.

$allowed = array('txt');
if (in_array(pathinfo($filename, PATHINFO_EXTENSION), $allowed)){ // Has the correct file extension
}

или более простая версия, которая позволяет использовать только расширения txt:

if (pathinfo($filename, PATHINFO_EXTENSION) == 'txt'){ // Has the correct file extension
}


Вы можете использовать pathinfo() чтобы получить расширение файла:

$info = pathinfo($pathToFile);
$ext = $info['extension'];

и затем проверьте, является ли расширение одним из разрешенных:

$validExtensions = array("txt", "doc");
if (in_array($ext, $validExtensions) { //more code
}


Используйте следующий код, он не может быть лучше:

$ext = pathinfo('test.txt', PATHINFO_EXTENSION);


$ext = pathinfo($filename, PATHINFO_EXTENSION);


strpos в порядке, вам нужно только иметь в виду, что вам нужна не первая, а последняя точка. и используйте strrpos(), обратите внимание на двойной "r".

licensed under cc by-sa 3.0 with attribution.