PHP如何在目录名(__FILE__)上提升一级

kxe2p93d  于 2023-05-12  发布在  PHP
关注(0)|答案(9)|浏览(136)

我的文件夹结构如下:

mydomain.example
  ->Folder-A
  ->Folder-B

我有一个来自Database的字符串../Folder-B/image1.jpg,它指向Folder-B中的一个图像。
Folder-A中的一个脚本中,我使用dirname(__FILE__)获取文件名,并得到mydomain.example/Folder-A。在这个脚本中,我需要得到一个字符串,表示为'mydomain.example/Folder-B/image1.jpg。我尽力了

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

这显示为mydomain.com%2FFolder-A%2F..%2FFolder-B%2Fimage1.jpg
这是一个Facebook的分享按钮,这无法获取正确的图像。有谁知道如何正确地走这条路?
我希望得到一个URL:mydomain.example%2FFolder-B%2Fimage1.jpg

w80xi6nr

w80xi6nr1#

对于PHP < 5.3用途:

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

在PHP 5.3到5.6中用途:

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

在PHP >= 7.0中用途:

$upOne = dirname(__DIR__, 1);
pexxcrt2

pexxcrt22#

如果你碰巧有php 7.0+,你可以使用levels。
dirname( __FILE__, 2 )使用第二个参数,您可以定义要返回的级别数量。
http://php.net/manual/en/function.dirname.php

13z8s7eq

13z8s7eq3#

试试这个

dirname(dirname( __FILE__ ))

编辑:删除“./”,因为它的语法不正确。没有它,它工作得很完美。

az31mfrm

az31mfrm4#

你可以使用PHP的dirname函数。<?php echo dirname(__DIR__); ?>。这将给予__DIR__的父目录的名称,它存储当前目录。

zed5wv10

zed5wv105#

dirname(__DIR__,level);
dirname(__DIR__,1);

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

w8f9ii69

w8f9ii696#

您可以使用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中将\替换为/

qfe3c7zg

qfe3c7zg7#

上一级,我用过:

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

对于php < 5.3:

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

aelbi1ox8#

对谁来说,处理共享托管环境,仍然有机会拥有当前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));
vq8itlhq

vq8itlhq9#

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

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

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

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

相关问题