88

我的文件夹结构如下:

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

我有一个来自数据库的字符串'../Folder-B/image1.jpg',它指向Folder-B中的一个图像。

在文件夹-A 的脚本中,我使用 dirname( FILE ) 来获取文件名,然后得到 mydomain.com/Folder-A. 在这个脚本中,我需要得到一个字符串,上面写着'mydomain.com/Folder-B/image1.jpg. 我试过

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

这显示为mydomain.com%2FFolder-A%2F..%2FFolder-B%2Fimage1.jpg

这是一个 facebook 分享按钮,它无法获取正确的图像。有人知道如何正确获取路径吗?

编辑:我希望得到一个网址 >>>mydomain.com%2FFolder-B%2Fimage1.jpg

4

9 回答 9

251

对于 PHP < 5.3 使用:

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

在 PHP 5.3 到 5.6 中使用:

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

在 PHP >= 7.0 中使用:

$upOne = dirname(__DIR__, 1);
于 2012-06-19T05:22:01.390 回答
22

如果你碰巧有 php 7.0+,你可以使用关卡。

dirname( __FILE__, 2 )使用第二个参数,您可以定义要返回的级别数量。

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

于 2016-12-22T09:52:18.110 回答
18

试试这个

dirname(dirname( __ FILE__))

编辑:删除“./”,因为它的语法不正确。没有它,它可以完美运行。

于 2012-06-19T05:27:24.990 回答
6

您可以使用 PHP 的 dirname 函数。 <?php echo dirname(__DIR__); ?>. __DIR__这将为您提供存储当前目录的父目录的名称。

于 2012-06-19T05:23:55.353 回答
2
dirname(__DIR__,level);
dirname(__DIR__,1);

级别是您将返回文件夹的次数

于 2019-01-17T11:01:36.907 回答
1

您可以使用realpath删除不必要的部分:

// 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 中的内容。/

于 2013-07-01T10:19:23.367 回答
0

上一级,我用过:

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

或者对于 php < 5.3:

str_replace(basename(dirname(__FILE__)) . '/' . basename(__FILE__), '', realpath(__FILE__)) . '/required.php';
于 2015-03-03T20:37:57.240 回答
0

对于谁,处理共享托管环境并且仍然有机会拥有当前 PHP 低于 7.0 的人没有dirname( __FILE__, 2 );可以使用以下。

function dirname_safe($path, $level = 0){
    $dir = explode(DIRECTORY_SEPARATOR, $path);
    $level = $level * -1;
    if($level == 0) $level = count($dir);
    array_splice($dir, $level);
    return implode($dir, DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR;
}

print_r(dirname_safe(__DIR__, 2));
于 2018-10-29T07:21:26.077 回答
-2

如果有绝对路径(这是一个示例),我会使用它:

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

如果有图片要显示,这就足够了:

echo("<img src='/Folder-B/image1.jpg'>");
于 2012-06-19T11:25:41.220 回答