php как перейти на один уровень вверх по dirname (файл)

у меня есть структура папок выглядит следующим образом:

mydomain.com
  ->Folder-A
  ->Folder-B

у меня есть строка из базы данных '../ Папка-B / image1.jpg', который указывает на изображение в папке-B.

внутри скрипта в папке-A я использую dirname (), чтобы получить имя файла, и я получаю mydomain.com/Folder-A. Внутри этого скрипта, мне нужно получить строку, которая говорит 'mydomain.com/Folder-B/image1.jpg. Я пытался!--6-->

$path=dirname(__FILE__).'/'.'../Folder-B/image1.jpg';

Это показывает mydomain.com%2FFolder-A%2F..%2FFolder-B%2Fimage1.jpg

Это для кнопки "Поделиться" facebook, и это не позволяет получить правильное изображение. Кто-нибудь знает, как правильно получить путь?

Edit: я надеюсь получить url >>>mydomain.com%2FFolder-B%2Fimage1.jpg

7 ответов


для PHP

$upOne = realpath(dirname(__FILE__) . '/..');

или в PHP 5.3+ использовать:

$upOne = realpath(__DIR__ . '/..');

попробуй такое

dirname(dirname( __ FILE__))

Edit: removed"./ "потому что это неправильный синтаксис. Без него он работает отлично.


Если у вас есть php 7.0+, вы можете использовать уровни.

dirname( __FILE__, 2 ) со вторым параметром вы можете определить количество уровней, которые вы хотите вернуться.

http://php.net/manual/en/function.dirname.php


вы можете использовать функцию dirname PHP. <?php echo dirname(__DIR__); ?>. Это даст вам имя родительского каталога __DIR__, в котором хранится текущий каталог.


можно использовать realpath удалить unnessesary часть:

// One level up
echo str_replace(realpath(dirname(__FILE__) . '/..'), '', realpath(dirname(__FILE__)));

// Two levels etc.
echo str_replace(realpath(dirname(__FILE__) . '/../..'), '', realpath(dirname(__FILE__)));

в windows также замените \ С / если нужно, что в URL.


на один уровень вверх, я использовал:

str_replace(basename(__DIR__) . '/' . basename(__FILE__), '', realpath(__FILE__)) . '/required.php';

или для php

str_replace(basename(dirname(__FILE__)) . '/' . basename(__FILE__), '', realpath(__FILE__)) . '/required.php';

Я использую это, если есть абсолютный путь (это как пример):

$img = imagecreatefromjpeg($_SERVER['DOCUMENT_ROOT']."/Folder-B/image1.jpg");

Если есть изображение, чтобы показать, этого достаточно:

echo("<img src='/Folder-B/image1.jpg'>");