Caminhos de Arquivos e Diretórios
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 vetor) 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 "\".
Fonte: http://rubsphp.blogspot.com/
Novo Comentário: