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
Postar um comentário