PHP - Utilizando o pathinfo ao invés de explode para tratar urls e caminhos de arquivos


Muitas vezes temos de tratar uma URL a fim de capturar o nome de um arquivo, uma extensão, um caminho, etc

É comum utilizar a função explode() para fazer isto:

<?php
$url = "http://byteseveryday.blogspot.com.br/2012/09/php-classes-genericas-com-varios-niveis.html";
$pedacos = explode('/',$url);
var_dump($pedacos);

Como resultado teremos

array(6) {
  [0]=>
  string(5) "http:"
  [1]=>
  string(0) ""
  [2]=>
  string(29) "byteseveryday.blogspot.com.br"
  [3]=>
  string(4) "2012"
  [4]=>
  string(2) "09"
  [5]=>
  string(44) "php-classes-genericas-com-varios-niveis.html"
}

Veja que apenas conseguimos "expodir" os elementos entre '/'. Se quisermos reconstruir um caminho ou mesmo saber qual a extensão de um arquivo teriamos de fazer algumas novas intervenções

<?php
$url = "http://byteseveryday.blogspot.com.br/2012/09/php-classes-genericas-com-varios-niveis.html";
$pedacos = explode('/',$url);
$extensao = explode('.',$pedacos[5]);

var_dump($extensao);

Isto resulta em:

array(2) {
  [0]=>
  string(39) "php-classes-genericas-com-varios-niveis"
  [1]=>
  string(4) "html"
}

Veja que temos de saber, préviamente, qual o indice da array para trata-la adequadamente, o que pode ser um problema para URLs que você não conheça bem.

Poderíamos, logicamente, fazer outros truques como inverter a array e pegar sempre o índice 0 e etc. mas seriam mais e mais passos.

Mas existe uma solução mais prática: a utilização da função nativa pathinfo()

<?php
$url = "http://byteseveryday.blogspot.com.br/2012/09/php-classes-genericas-com-varios-niveis.html";
$pedacos = pathinfo($url);
var_dump($pedacos);

A resposta é a que segue:

array(4) {
  ["dirname"]=>
  string(44) "http://byteseveryday.blogspot.com.br/2012/09"
  ["basename"]=>
  string(44) "php-classes-genericas-com-varios-niveis.html"
  ["extension"]=>
  string(4) "html"
  ["filename"]=>
  string(39) "php-classes-genericas-com-varios-niveis"
}

Veja que a função já nos informa qual a extensão do arquivo, caminho, nome do arquivo e etc.

Assim, com apenas duas linhas de código conseguimos obter a maior parte das das informações que precisamos.

pathinfo() também pode ser utilizado com caminhos físicos dentro de uma estrutura de diretórios.

Por hoje é isto.
Abraço

Comentários

Postagens mais visitadas deste blog

MySQL - Completando quantidades fixas de caracteres com as funções LPAD() e RPAD()

MySQL - Clonando tabelas na linha de comando

PHP - Gerando arquivo em UTF-8 com fwrite() e utf8_encode()