PHP функция для получения расширения файла - PullRequest
2 голосов
/ 17 мая 2011

Может кто-нибудь помочь мне изменить этот скрипт, чтобы использовать preg_split (рекомендуется заменить на php.net) вместо split, которая больше не используется.Эта функция получает расширение любого загруженного файла в переменной $ filename.

function findExtension ($filename)
{
   $filename = strtolower($filename) ;
   $exts = split("[/\\.]", $filename) ;
$n = count($exts)-1;
$exts = $exts[$n];
return $exts;
}

Ответы [ 7 ]

16 голосов
/ 17 мая 2011

Вы должны просто использовать 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"; // since PHP 5.2.0
2 голосов
/ 17 мая 2011

Я предпочитаю функцию, которую Дэвид Уолш опубликовал , которая использует функцию "strrchr", чтобы получить последнее вхождение "."в строке.


function get_file_extension($file_name)
{
  return substr(strrchr($file_name,'.'),1);
}
2 голосов
/ 17 мая 2011

Вместо split вы можете просто использовать explode.Так как вам просто нужно расширение, нет смысла делить его на /, просто разделить на точку и получить последний элемент с array_pop.

1 голос
/ 17 мая 2011

Если расширение файла является единственной частью, которую вы хотите:

function GetExt($filename) {
    return (($pos = strrpos($filename, '.')) !== false ? substr($filename, $pos+1) : '');
}
1 голос
/ 17 мая 2011

Почему бы вам не использовать эту функцию: http://www.php.net/manual/fr/function.finfo-file.php или эту: http://fr2.php.net/manual/fr/function.pathinfo.php

Вы также можете использовать взорваться

function findExtension ($filename)
{
   $filename = strtolower($filename) ;
   $exts = explode(".", $filename) ;
   $n = count($exts)-1;
   $exts = $exts[$n];
   return $exts;
}
0 голосов
/ 04 июня 2014

Мой код даст расширение файла, удалив строки запроса.pathinfo также возвращает расширение со строкой.поэтому используйте мой код, если хотите знать точное имя файла:

$filename = 'http://doamin/js.jquery.min.js?v1.1.11';    
preg_replace('/\?.*/', '', substr(strrchr($filename, '.'), 1));

// output: js
0 голосов
/ 17 мая 2011

Возможно, что-то в этом роде?

$string = "some/path_to_a_file.txt";
$pattern = preg_split('/\./', $string, -1, PREG_SPLIT_OFFSET_CAPTURE); 
...