Содержание
Получить имя файла с расширением
Javascript
Чтобы получить имя файла, мы разделим его символом косой черты /. Чтобы достичь этого в Javascript, мы будем использовать следующее регулярное выражение /^.*[\\\/]/
:
// Any filepath, even inverted slash
// var filepath = "\\myfilepath\\extensions\\filename.png";
var filepath = "/myfilepath/extensions/filename.png";
// Use the regular expression to replace the non-matching content with a blank space
var filenameWithExtension = filepath.replace(/^.*[\\\/]/, '');
// outputs filename.png
console.log(filenameWithExtension);
Регулярное выражение вернет оставшийся текст из последнего символа / (косая черта). Поскольку не любой файл может содержать /
во имя его но \
эта функция также будет работать во всех случаях.
Если вы не хотите использовать регулярное выражение, поскольку уверены, что указанные пути к файлам используют только определенный тип косой черты (или / или \), вы можете разбить строку на указанный символ и затем получить последний вещь:
var filepath = "/myfilepath/extensions/filename.png";
// With a normal slash
var group = filepath.split("/");
// or a path with an inverted slash
// var group = filepath.split("\\");
// Use the regular expression to replace the non-matching content with a blank space
var filenameWithExtension = group.pop();
// Or if you can't use pop()
// var filenameWithExtension = group[group.length - 1];
// outputs filename.png
console.log(filenameWithExtension);
PHP
В PHP мы будем использовать функцию basename, которая доступна во всех версиях php:
$filepath = "/myfilepath/extensions/filename.jpg";
$filename = basename($filepath); // filename.jpg
Примечание: у basename есть известная ошибка при обработке азиатских символов, чтобы избежать этого, вы можете вместо этого использовать Regular Expression и preg_replace:
$filepath = "/myfilepath/extensions/filename.jpg";
$filename = preg_replace('/^.+[\\\\\\/]/', '', $filepath); // filename.jpg
Получить расширение файла
Javascript
Чтобы извлечь расширение из пути (или имени файла, в данном случае это не имеет значения) с помощью Javascript мы разделим строку на. символ, и мы получим последний элемент полученного массива.
var path = "path/a-long/path/to-my/file.jpg";
var path_splitted = path.split('.');
var extension = path_splitted.pop();
// Here the file will not have extension !
if(extension === path){
// The filepath doesn't have . characters, that means doesn't have extension. for example :
// if you try with : path/to/my/file/thisisafile
// extension == path/to/my/file/thisisafile
}
// show extension
console.log(extension);
PHP
Чтобы извлечь расширение из пути с помощью php, мы будем использовать функцию pathinfo.
$path = "this-is-my/long/filepath/to/file.txt";
$ext = pathinfo($path, PATHINFO_EXTENSION);// PATHINFO_EXTENSION is a constant
echo $ext; // output txt
Примечание: если функция pathinfo недоступна в вашей среде, используйте вместо нее функцию end.
$path = "this-is-another-long-path/to/my/file.txt";
$array_ofpath = explode('.', $path);//explode returns an array
$extension = end($array);