100 votes

php comment remonter d'un niveau sur dirname(__FILE__)

J'ai une structure de dossiers comme suit :

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

J'ai une chaîne de la base de données qui est '../Dossier-B/image1.jpg', qui pointe vers une image dans le dossier-B.

Dans un script dans le Dossier-A, j'utilise dirname( DOSSIER ) pour récupérer le nom du fichier et j'obtiens mydomain.com/Folder-A . A l'intérieur de ce script, j'ai besoin d'obtenir une chaîne de caractères qui dit 'mydomain.com/Folder-B/image1.jpg . J'ai essayé

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

Cela se traduit par mydomain.com%2FFolder-A%2F..%2FFolder-B%2Fimage1.jpg

Il s'agit d'un bouton de partage facebook, et il ne parvient pas à récupérer l'image correcte. Quelqu'un sait-il comment obtenir le chemin correct ?

Edit : J'espère obtenir une url >>>mydomain.com%2FFolder-B%2Fimage1.jpg

296voto

Petah Points 18432

Pour PHP < 5.3, utilisez :

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

En PHP 5.3 à 5.6, utilisez :

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

En PHP >= 7.0, utilisez :

$upOne = dirname(__DIR__, 1);

24voto

Bas van Dijk Points 617

Si vous disposez de php 7.0+, vous pouvez utiliser les niveaux.

dirname( __FILE__, 2 ) avec le deuxième paramètre, vous pouvez définir le nombre de niveaux que vous souhaitez reculer.

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

18voto

Abhishek Points 689

Essayez ceci

dirname(dirname( __ FILE__))

Edition : suppression de "./" car la syntaxe n'est pas correcte. Sans lui, cela fonctionne parfaitement.

6voto

Shane Points 750

Vous pouvez utiliser la fonction dirname de PHP. <?php echo dirname(__DIR__); ?> . Cela vous donnera le nom du répertoire parent de __DIR__ qui stocke le répertoire courant.

5voto

dılo sürücü Points 1989
dirname(__DIR__,level);
dirname(__DIR__,1);

est de savoir combien de fois vous allez retourner dans le dossier.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X