Obter Caminhos de Arquivos e Diretórios com PHP

Artigo que apresenta algumas funções úteis do PHP para manipular caminhos para arquivos e diretórios, além de funções para determinar informações sobre eles.

Frequentemente surge uma ferramenta em uma aplicação que precisa recuperar um determinado dado de um caminho completo a um arquivo ou diretório. As vezes precisamos apenas do diretório, ou apenas o nome do arquivo, ou apenas a extensão do arquivo, etc. Frequentemente os programadores utilizam funções como explode, strpos e substr para obter o que querem. De fato, até conseguem, mas nem todos sabem que já existem funções no PHP próprias para isso.

Vejamos as principais delas:

  • dirname - Obtém a porção que representa o diretório a partir de um caminho completo informado.
  • basename - Obtém a porção que representa o nome do arquivo ou diretório a partir de um caminho completo informado.
  • pathinfo - Obtém várias informações (na forma de um array) sobre um caminho informado ou obtém uma informação específica, caso informada.
  • realpath - Obtém o caminho absoluto de um caminho relativo (caminha sobre ".", ".." e links simbólicos, além de remover "/" desnecessários) ou retorna false, caso o caminho não exista.

Veja alguns exemplos:

$path = '/home/rubens/teste.php';

echo basename($path);          // obtem "teste.php"
echo dirname($path);           // obtem "/home/rubens"
echo dirname(dirname($path));  // obtem "/home"

$pathinfo  = pathinfo($path);
echo $pathinfo['dirname'];   // obtem "/home/rubens"
echo $pathinfo['basename'];  // obtem "teste.php"
echo $pathinfo['extension']; // obtem "php"
echo $pathinfo['filename'];  // obtem "teste"

echo pathinfo($path, PATHINFO_DIRNAME);   // obtem: "/home/rubens"
echo pathinfo($path, PATHINFO_BASENAME);  // obtem: "teste.php"
echo pathinfo($path, PATHINFO_EXTENSION); // obtem: "php"
echo pathinfo($path, PATHINFO_FILENAME);  // obtem: "teste"

echo realpath('/home///rubens/pasta/../teste.php'); // obtem "/home/rubens/teste.php"

Além disso, pode ser útil conhecer a constante DIRECTORY_SEPARATOR, que guarda o caractere usado para separar diretórios na plataforma do servidor. Por exemplo, no Linux, a constante devolve "/", mas no Windows devolve "\".

1 comentário