Ich habe eine Ordnerstruktur wie folgt:
mydomain.com
->Folder-A
->Folder-B
Ich habe eine Zeichenfolge aus der Datenbank '../Folder-B/image1.jpg', die auf ein Bild in Ordner B verweist.
In einem Skript in Ordner A verwende ich dirname ( FILE ), um den Dateinamen abzurufen, und erhalte
mydomain.com/Folder-A
. In diesem Skript muss ich eine Zeichenfolge erhalten, die besagt 'mydomain.com/Folder-B/image1.jpg
. Ich habe es versucht
$path=dirname(__FILE__).'/'.'../Folder-B/image1.jpg';
Dies zeigt sich als mydomain.com%2FFolder-A%2F..%2FFolder-B%2Fimage1.jpg
Dies gilt für eine Facebook-Freigabeschaltfläche, mit der nicht das richtige Bild abgerufen werden kann. Weiß jemand, wie man den Weg richtig findet?
Bearbeiten: Ich hoffe, eine URL zu erhalten >>> mydomain.com% 2FFolder-B% 2Fimage1.jpg
Antworten:
Für PHP <5.3 verwenden Sie:
$upOne = realpath(dirname(__FILE__) . '/..');
In PHP 5.3 bis 5.6 verwenden Sie:
$upOne = realpath(__DIR__ . '/..');
In PHP> = 7.0 verwenden Sie:
$upOne = dirname(__DIR__, 1);
quelle
realpath()
aus deinem Beitrag herausgefunden. Mein letztes Problem mit der Ausgabe wurde perfekt gelöst, danke!dirname(__DIR__)
Wenn Sie PHP 7.0+ haben, können Sie Levels verwenden.
dirname( __FILE__, 2 )
Mit dem zweiten Parameter können Sie die Anzahl der Ebenen definieren, zu denen Sie zurückkehren möchten.http://php.net/manual/en/function.dirname.php
quelle
Versuche dies
Bearbeiten: "./" wurde entfernt, da die Syntax nicht korrekt ist. Ohne es funktioniert es perfekt.
quelle
Sie können die Dirname-Funktion von PHP verwenden.
<?php echo dirname(__DIR__); ?>
. Dadurch erhalten Sie den Namen des übergeordneten Verzeichnisses von__DIR__
, in dem das aktuelle Verzeichnis gespeichert ist.quelle
Sie können verwenden
realpath
, um unnötige Teile zu entfernen:// One level up echo str_replace(realpath(dirname(__FILE__) . '/..'), '', realpath(dirname(__FILE__))); // Two levels etc. echo str_replace(realpath(dirname(__FILE__) . '/../..'), '', realpath(dirname(__FILE__)));
Unter Windows ersetzen Sie diese
\
bei/
Bedarf auch durch die URL.quelle
dirname(__DIR__,level); dirname(__DIR__,1);
Stufe ist, wie oft Sie zum Ordner zurückkehren
quelle
Eine Ebene höher habe ich verwendet:
str_replace(basename(__DIR__) . '/' . basename(__FILE__), '', realpath(__FILE__)) . '/required.php';
oder für php <5.3:
str_replace(basename(dirname(__FILE__)) . '/' . basename(__FILE__), '', realpath(__FILE__)) . '/required.php';
quelle
Für wen, Deaktivierung mit Share-Hosting-Umgebung und immer noch die Chance, aktuelles PHP unter 7.0 zu haben Wer es nicht hat
dirname( __FILE__, 2 );
, kann Folgendes verwenden.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));
quelle
Ich benutze dies, wenn es einen absoluten Pfad gibt (dies ist ein Beispiel):
$img = imagecreatefromjpeg($_SERVER['DOCUMENT_ROOT']."/Folder-B/image1.jpg");
Wenn ein Bild zu zeigen ist, reicht dies aus:
echo("<img src='/Folder-B/image1.jpg'>");
quelle