Php имя файла полное имя

Как мне получить имя файла из полного пути с помощью PHP

Например, как мне получить Output.map

из

F:\Program Files\SSH Communications Security\SSH Secure Shell\Output.map

с помощью PHP?

Ответ 1

Можно это сделать с помощью basename .

Пример из руководства по PHP:

$path = «/home/httpd/html/index.php»;

$file = basename($path); // $file is set to «index.php»

$file = basename($path, «.php»); // $file is set to «index»

?>

Ответ 2

Я сделал это с помощью функции PATHINFO, которая создает массив с частями пути, которые вы можете использовать. Например, вы можете сделать это так:

$xmlFile = pathinfo(‘/usr/admin/config/test.xml’);

function filePathParts($arg1)

echo $arg1[‘dirname’], «\n»;

echo $arg1[‘basename’], «\n»;

echo $arg1[‘extension’], «\n»;

echo $arg1[‘filename’], «\n»;

>

filePathParts($xmlFile);

?>

На выходе будет:

/usr/admin/config

test.xml

xml

test

Использование этой функции доступно, начиная с PHP 5.2.0.

Затем вы можете манипулировать всеми частями по своему усмотрению. Например, чтобы использовать полный путь, вы можете сделать это:

$fullPath = $xmlFile[‘dirname’] . ‘/’ . $xmlFile[‘basename’];

Ответ 3

Есть несколько способов узнать имя и расширение файла. Вы можете использовать следующий код, который прост в использовании.

$url = ‘http://www.nepaltraveldoor.com/images/trekking/nepal/annapurna-region/Annapurna-region-trekking.jpg’;

$file = file_get_contents($url); // получить файл

$name = basename($url); // получить имя файла

$ext = pathinfo($url, PATHINFO_EXTENSION); // получить расширение файла

$name2 =pathinfo($url, PATHINFO_FILENAME); // получить имя файла без расширения

Ответ 4

Чтобы сделать это с наименьшими затратами, я бы предложил использовать встроенную константу DIRECTORY_SEPARATOR вместе с explode(delimiter, string), чтобы разделить путь на части, а затем просто отсоединить последний элемент в предоставленном массиве.

Пример:

$path = ‘F:\Program Files\SSH Communications Security\SSH SecureShell\Output.map’

// получение полного пути файла

$pathArr = explode(DIRECTORY_SEPARATOR, $path);

$filename = end($pathArr);

echo $filename;

>> ‘Output.map’

Ответ 5

Это просто. Например:

function filePath($filePath)

$fileParts = pathinfo($filePath);

if (!isset($fileParts[‘filename’]))

$fileParts[‘filename’] = substr($fileParts[‘basename’], 0, strrpos($fileParts[‘basename’], ‘.’));

>

return $fileParts;

>

$filePath = filePath(‘/www/htdocs/index.html’);

print_r($filePath);

?>

Результатом будет:

Array (

[dirname] => /www/htdocs [basename] => index.html [extension] => html [filename] => index

)

Ответ 6

Чтобы получить точное имя файла из URI, я бы использовал этот метод:

$file1 =basename(«http://localhost/eFEIS/agency_application_form.php?formid=1&task=edit») ;

//basename($_SERVER[‘REQUEST_URI’]); // Or use this to get the URI dynamically.

Читайте также:  Java сортировка двумерного массива пузырьком

echo $basename = substr($file1, 0, strpos($file1, ‘?’));

?>

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

Источник

pathinfo

pathinfo() returns information about path : either an associative array or a string, depending on flags .

Note:

For information on retrieving the current path info, read the section on predefined reserved variables.

Note:

pathinfo() operates naively on the input string, and is not aware of the actual filesystem, or path components such as » .. «.

Note:

On Windows systems only, the \ character will be interpreted as a directory separator. On other systems it will be treated like any other character.

pathinfo() is locale aware, so for it to parse a path containing multibyte characters correctly, the matching locale must be set using the setlocale() function.

Parameters

If present, specifies a specific element to be returned; one of PATHINFO_DIRNAME , PATHINFO_BASENAME , PATHINFO_EXTENSION or PATHINFO_FILENAME .

If flags is not specified, returns all available elements.

Return Values

If the flags parameter is not passed, an associative array containing the following elements is returned: dirname , basename , extension (if any), and filename .

Note:

If the path has more than one extension, PATHINFO_EXTENSION returns only the last one and PATHINFO_FILENAME only strips the last one. (see first example below).

Note:

If the path does not have an extension, no extension element will be returned (see second example below).

Note:

If the basename of the path starts with a dot, the following characters are interpreted as extension , and the filename is empty (see third example below).

If flags is present, returns a string containing the requested element.

Examples

Example #1 pathinfo() Example

$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» ;
?>

The above example will output:

/www/htdocs/inc lib.inc.php php lib.inc

Example #2 pathinfo() example showing difference between null and no extension

$path_parts = pathinfo ( ‘/path/emptyextension.’ );
var_dump ( $path_parts [ ‘extension’ ]);

$path_parts = pathinfo ( ‘/path/noextension’ );
var_dump ( $path_parts [ ‘extension’ ]);
?>

The above example will output something similar to:

string(0) "" Notice: Undefined index: extension in test.php on line 6 NULL

Example #3 pathinfo() example for a dot-file

The above example will output something similar to:

Array ( [dirname] => /some/path [basename] => .test [extension] => test [filename] => )

Example #4 pathinfo() example with array dereferencing

Читайте также:  Java readutf datainputstream io

The flags parameter is not a bitmask. Only a single value may be provided. To select only a limited set of parsed values, use array destructuring like so:

[ ‘basename’ => $basename , ‘dirname’ => $dirname ] = pathinfo ( ‘/www/htdocs/inc/lib.inc.php’ );

var_dump ( $basename , $dirname );
?>

The above example will output something similar to:

string(11) "lib.inc.php" string(15) "/www/htdocs/inc"

See Also

  • dirname() — Returns a parent directory’s path
  • basename() — Returns trailing name component of path
  • parse_url() — Parse a URL and return its components
  • realpath() — Returns canonicalized absolute pathname

Источник

PHP Текущее местоположение скрипта, папки, имя файла

В языке PHP есть несколько полезных констант, которые мы можем применять в построении динамического пути к файлу или папке.

Как в PHP узнать полный путь к файлу или папке

Для начала приведу примеры, что вы получите вызвав соответствующие константы:

echo __FILE__; // /home/bitrix/www/bitrix/modules/main/admin/php_command_line.php echo __DIR__; // /home/bitrix/www/bitrix/modules/main/admin

Мы рассмотрели 2 константы, __FILE__ и __DIR__ для отображения полного пути к текущему файлу и папке (директории). Стоит отметить, что __DIR__ эквивалентен вызову:

echo dirname(__FILE__); // /home/bitrix/www/bitrix/modules/main/admin

dirname – это стандартная функция PHP, которая возвращает родительский каталог. Она применяется как раз для таких ситуаций, когда вам нужно узнать полный путь к файлу без самого файла :). Мне на ум пришла идея, как можно добиться такого же результата (не удивлюсь, если под капотом тоже самое):

echo str_replace(__FILE__, '',__DIR__); // /home/bitrix/www/bitrix/modules/main/admin

Что мы еще можем применить для константы __FILE__? Конечно же отделить путь и получить просто имя файла:

echo basename(__FILE__); // php_command_line.php

basename – функция возвращает последний элемент из пути, который, как правило, и является именем файла. Раз уж мы решили писать функции заменители, давайте рассмотрим наш URL, как массив, разделенный слешами (“/”):

$arPath = explode('/', __FILE__); // Array ( [0] => [1] => home [2] => bitrix [3] => www [4] => bitrix // [5] => modules [6] => main [7] => admin [8] => php_command_line.php

Как видим, последний элемент массива является нашим файлом. Чтобы получить последний элемент массива, не зная его количество, пишем:

$arPath = explode('/', __FILE__); echo $arPath[count($arPath)-1];

Минус 1 потому как отсчет для массивов идет с нуля, но при счете всегда стартует с единицы.
Важно – в некоторых указаниях полного пути вы используете разделители (вышеупомянутые слеши ‘/’). Но, для Windows это «\», для Linux и остальных — «/». Есть такая константа:

Читайте также:  Javascript работа с параметрами

Вернет 1 слеш (без кавычек).

Немного закрепим 2 функции, о которых шла речь выше:
str_replace – функция, которая используется для замены в строке. Первый параметр “что ищем”, затем “на что меняем” и последний “где ищем”, в который мы и передали нашу полную строку.
explode – функция, которая делает из строки массив. Но, чтобы функции понять как разбить строку – ей нужно передать “разделитель”, а уже вторым параметром – саму строку.

Как вы заметили, “/home/bitrix/www” – это путь на самом сервере, который можно “вырезать” как раз при помощи str_replace.
Если вам нужно использовать “текущий домен”, то получить его при помощи PHP можно несколькими способами. Один из них:

echo $_SERVER['SERVER_NAME']; // site.com.ua

Надеюсь вам эта тема была интересна. Пишите в комментариях как вам формат, и нужен ли он вообще. А то в последнее время только битрикс да битрикс :).

Источник

Работа с именами файлов в PHP

Набор PHP функций для работы с путями и именами файлов.

Получить имя файла

echo basename('path/file.png'); // file.png

Имя файла без расширения

$info = pathinfo('path/file.png'); echo $info['filename']; // file /* или */ echo pathinfo('path/donut.png', PATHINFO_FILENAME); // file

Получить расширение файла

echo mb_strtolower(mb_substr(mb_strrchr('path/file.png', '.'), 1)); // png /* или */ echo pathinfo('path/file.png', PATHINFO_EXTENSION); // png

Заменить расширение файла

Заменить расширение .jpeg на .jpg:

$file_name = 'file.jpeg'; $file_new = preg_replace('/\.jpeg$/', '.jpg', $file_name); echo $file_new; // file.jpg

Заменить несколько расширений на одно (.jpg, .jpeg, .png на .webp):

$file_name = 'file.jpeg'; $file_new = preg_replace('/\.(jpg|jpeg|png)$/', '.webp', $file_name); echo $file_new; // file.webp

Дописать текст в конец названия файла

$info = pathinfo('path/file.png'); $name = $info['dirname'] . '/' . $info['filename'] . '-' . time() . '.' . $info['extension']; echo $name; // path/file-1610877618.png

Безопасное сохранение файла

Чтобы не затереть существующий файл на сервере можно применить данную функцию.

В функцию передаётся путь и имя файла, если на сервере уже существует такой файл, функция к концу файла приписывает префикс. Также если директория не существует, пытается её создать.

function safe_file($filename) < $dir = dirname($filename); if (!is_dir($dir)) < mkdir($dir, 0777, true); >$info = pathinfo($filename); $name = $dir . '/' . $info['filename']; $prefix = ''; $ext = (empty($info['extension'])) ? '' : '.' . $info['extension']; if (is_file($name . $ext)) < $i = 1; $prefix = '_' . $i; while (is_file($name . $prefix . $ext)) < $prefix = '_' . ++$i; >> return $name . $prefix . $ext; > // Если в директории есть файл log.txt, файл будет сохранен с названием log_1.txt file_put_contents(safe_file(__DIR__ . '/log.txt'), $text);

Источник

Оцените статью