Как получить имя файла php
Перейти к содержимому

Как получить имя файла php

  • автор:

DirectoryIterator::getBasename

Получает базовое имя текущего элемента DirectoryIterator .

Список параметров

Если базовое имя заканчивается на suffix , то он будет отброшен.

Возвращаемые значения

Базовое имя текущего элемента DirectoryIterator .

Примеры

Пример #1 Пример использования DirectoryIterator::getBasename()

В этом примере для файлов в каталоге, содержащем скрипт, будет перечислено полное базовое имя и базовое имя с удалённым суффиксом .jpg .

$dir = new DirectoryIterator ( dirname ( __FILE__ ));
foreach ( $dir as $fileinfo ) if ( $fileinfo -> isFile ()) echo $fileinfo -> getBasename () . «\n» ;
echo $fileinfo -> getBasename ( ‘.jpg’ ) . «\n» ;
>
>
?>

Вывод приведённого примера будет похож на:

apple.jpg apple banana.jpg banana index.php index.php pear.jpg pear

Смотрите также

  • DirectoryIterator::getFilename() — Возвращает имя файла текущего элемента DirectoryIterator
  • DirectoryIterator::getPath()
  • DirectoryIterator::getPathname()
  • basename() — Возвращает последний компонент имени из указанного пути
  • pathinfo() — Возвращает информацию о пути к файлу

User Contributed Notes

There are no user contributed notes for this page.

  • Copyright © 2001-2024 The PHP Group
  • My PHP.net
  • Contact
  • Other PHP.net sites
  • Privacy policy

Работа с именами файлов в 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);

ReflectionClass::getFileName

Возвращает имя файла, в котором определён класс. Если класс определён в ядре PHP или в модуле PHP, возвращает false .

Смотрите также

  • ReflectionClass::getExtensionName() — Возвращает имя модуля, определяющее класс

User Contributed Notes 1 note

6 years ago

$a = new \ReflectionClass ( ‘ZN\Database\InternalDB’ );

var_dump ( $a -> getFileName ());

  • ReflectionClass
    • _​_​construct
    • getAttributes
    • getConstant
    • getConstants
    • getConstructor
    • getDefaultProperties
    • getDocComment
    • getEndLine
    • getExtension
    • getExtensionName
    • getFileName
    • getInterfaceNames
    • getInterfaces
    • getMethod
    • getMethods
    • getModifiers
    • getName
    • getNamespaceName
    • getParentClass
    • getProperties
    • getProperty
    • getReflectionConstant
    • getReflectionConstants
    • getShortName
    • getStartLine
    • getStaticProperties
    • getStaticPropertyValue
    • getTraitAliases
    • getTraitNames
    • getTraits
    • hasConstant
    • hasMethod
    • hasProperty
    • implementsInterface
    • inNamespace
    • isAbstract
    • isAnonymous
    • isCloneable
    • isEnum
    • isFinal
    • isInstance
    • isInstantiable
    • isInterface
    • isInternal
    • isIterable
    • isIterateable
    • isReadOnly
    • isSubclassOf
    • isTrait
    • isUserDefined
    • newInstance
    • newInstanceArgs
    • newInstanceWithoutConstructor
    • setStaticPropertyValue
    • _​_​toString
    • export
    • Copyright © 2001-2024 The PHP Group
    • My PHP.net
    • Contact
    • Other PHP.net sites
    • Privacy policy

    Как мне получить имя файла из полного пути с помощью 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.

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

    ?>

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *