PHP如何去dirname上一级(__ FILE__)
我有一个文件夹结构如下:
mydomain.com ->Folder-A ->Folder-B
我有一个数据库的string是“../Folder-B/image1.jpg”,它指向文件夹-B中的图像。
在文件夹A的脚本里面,我使用dirname( FILE )来获取文件名,我得到了mydomain.com/Folder-A
。 在这个脚本里面,我需要得到一个string'mydomain.com/Folder-B/image1.jpg
。 我试过了
$path=dirname(__FILE__).'/'.'../Folder-B/image1.jpg';
这显示为mydomain.com%2FFolder-A%2F..%2FFolder-B%2Fimage1.jpg
这是一个Facebook分享button,这不能获取正确的图像。 任何人都知道如何正确的path?
编辑:我希望得到一个url >>> mydomain.com%2FFolder-B%2Fimage1.jpg
对于PHP <5.3使用:
$upOne = realpath(dirname(__FILE__) . '/..');
或者在PHP 5.3+中使用:
$upOne = realpath(__DIR__ . '/..');
尝试这个
dirname(dirname( __ FILE__))
编辑:删除“./”,因为它是不正确的语法。 没有它,它完美的作品。
你可以使用PHP的dirname函数。 <?php echo dirname(__DIR__); ?>
<?php echo dirname(__DIR__); ?>
。 这会给你__DIR__
的父目录的__DIR__
,它存储当前目录。
如果你碰巧有PHP 7.0,你可以使用水平。
dirname( __FILE__, 2 )
与第二个参数,你可以定义你想要返回的级别的数量。
你可以使用实时path去除非理性的部分:
// 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上,也可以用URLreplace\
。
上一层,我用过:
str_replace(basename(__DIR__) . '/' . basename(__FILE__), '', realpath(__FILE__)) . '/required.php';
或者用于php <5.3:
str_replace(basename(dirname(__FILE__)) . '/' . basename(__FILE__), '', realpath(__FILE__)) . '/required.php';
我使用这个,如果有一个绝对path(这是一个例子):
$img = imagecreatefromjpeg($_SERVER['DOCUMENT_ROOT']."/Folder-B/image1.jpg");
如果有照片要显示,这就足够了:
echo("<img src='/Folder-B/image1.jpg'>");