Tengo una estructura de carpetas de la siguiente manera:
mydomain.com
->Folder-A
->Folder-B
Tengo una cadena de la base de datos que es '../Folder-B/image1.jpg', que apunta a una imagen en Folder-B.
Dentro de un script en la Carpeta-A, estoy usando dirname ( FILE ) para buscar el nombre del archivo y obtengo
mydomain.com/Folder-A
. Dentro de este script, necesito obtener una cadena que diga 'mydomain.com/Folder-B/image1.jpg
. Lo intenté
$path=dirname(__FILE__).'/'.'../Folder-B/image1.jpg';
Esto se muestra como mydomain.com%2FFolder-A%2F..%2FFolder-B%2Fimage1.jpg
Esto es para un botón para compartir de Facebook y no logra obtener la imagen correcta. ¿Alguien sabe cómo obtener el camino correctamente?
Editar: espero obtener una URL >>> midominio.com% 2FFolder-B% 2Fimage1.jpg
Respuestas:
Para PHP <5.3 use:
$upOne = realpath(dirname(__FILE__) . '/..');
En PHP 5.3 a 5.6 use:
$upOne = realpath(__DIR__ . '/..');
En PHP> = 7.0 use:
$upOne = dirname(__DIR__, 1);
fuente
realpath()
en tu publicación. Resolví mi último problema con la salida a la perfección, ¡gracias!dirname(__DIR__)
Si tiene php 7.0+, puede usar niveles.
dirname( __FILE__, 2 )
con el segundo parámetro puede definir la cantidad de niveles que desea retroceder.http://php.net/manual/en/function.dirname.php
fuente
Prueba esto
Editar: eliminado "./" porque no es la sintaxis correcta. Sin él, funciona perfectamente.
fuente
Puede usar la función dirname de PHP.
<?php echo dirname(__DIR__); ?>
. Eso le dará el nombre del directorio principal de__DIR__
, que almacena el directorio actual.fuente
Puede usar
realpath
para eliminar la parte uniesaria:// One level up echo str_replace(realpath(dirname(__FILE__) . '/..'), '', realpath(dirname(__FILE__))); // Two levels etc. echo str_replace(realpath(dirname(__FILE__) . '/../..'), '', realpath(dirname(__FILE__)));
En Windows, también reemplace
\
con/
si es necesario en la URL.fuente
dirname(__DIR__,level); dirname(__DIR__,1);
el nivel es cuántas veces volverás a la carpeta
fuente
Un nivel arriba, he usado:
str_replace(basename(__DIR__) . '/' . basename(__FILE__), '', realpath(__FILE__)) . '/required.php';
o para php <5.3:
str_replace(basename(dirname(__FILE__)) . '/' . basename(__FILE__), '', realpath(__FILE__)) . '/required.php';
fuente
Para quién, trabajando con el entorno de alojamiento compartido y aún la posibilidad de tener PHP actual menos de 7.0 Quién no lo tiene
dirname( __FILE__, 2 );
, es posible utilizar lo siguiente.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));
fuente
Yo uso esto, si hay una ruta absoluta (este es un ejemplo):
$img = imagecreatefromjpeg($_SERVER['DOCUMENT_ROOT']."/Folder-B/image1.jpg");
si hay una imagen para mostrar, esto es suficiente:
echo("<img src='/Folder-B/image1.jpg'>");
fuente