Postagens

PHP - Utilizando ltrim e rtrim ao invés de substring ou regexp

O conjunto de funções trim() são interessantes não só em casos em que devemos retirar espaços vazios do inicio ou final de uma string, mas também quando precisamos retirar outros caracteres indesejados. Sim, trim() , rtrim() e ltrim() aceitam retirar outros caracteres além do espaço. Isto é interessante principalmente quando montamos listas através de um loop. No final sempre fica aquela virgula chata. <?php $lista = ""; for  ($i=0;$i<10;$i++)  { $lista .= "{$i},"; } echo $lista; O script acima produz 0,1,2,3,4,5,6,7,8,9, Ao invés de executarmos uma substring chata podemos simplesmente, por exemplo, retirar a vírgula do final da lista utilizando rtrim($lista,',') : <?php $lista = ""; for  ($i=0;$i<10;$i++)  { $lista .= "{$i},"; } echo rtrim($lista,','); O script acima produz 0,1,2,3,4,5,6,7,8,9 Abraço a todos.

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-gene...

PHP - Testando se uma constante foi setada através do defined()

As constantes em linguagem de programação são importantes pois geralmente são variáveis globais, acessíveis diretamente dentro de qualquer função ou método dentro do escopo do programa. Muitas vezes é importante saber se uma variável foi setada para que possamos fazer um tratamento de erro adequado. Normalmente testamos se uma variável foi setada utilizando o isset() <?php $variavel = 1; var_dump(isset($variavel)); O comando acima retorna bool(true) Porém, se tentarmos fazer o mesmo com uma constante (lembrando que por padrão é sempre interessante criar as constantes com todos os caracteres em caixa alta) <?php define(VARIAVEL2,2); var_dump(isset('VARIAVEL2')); O comando acima deve retornar a seguinte mensagem: "Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING" Para testarmos uma constante devemos utilizar uma função específica, defined(): <?php define(VARIAVEL2,2); var_dump(defined('VARIAVEL2')); A...

PHP - Buffer/Buffering - Controle de Saída ob_start(), ob_get_contents() e ob_end_clean()

Controle de saída em PHP é muito interessante, principalmente quando trabalhamos com Curl ou quando queremos que uma página seja exibida apenas quando todo seu conteúdo foi processado. Esta dica é bem rápida. Pretendo no futuro postar algo mais completo. Utilizaremos as funções de Buffer do PHP. Vamos aos exemplos então: <?php echo 'Saida'; A instrução acima retornaria 'Saida' Mas vamos supor que não queremos esta saída e, sim, guardar a informação dentro de uma variável. Para isto usamos um buffer. <?php ob_start(); echo 'Saida'; $output = ob_get_contents(); ob_end_clean(); Este script não retorna valor pois apontamos a saída para a variável $output. Aqui ob_start() inicia o buffer, gravando tudo que é enviado para a saída padrão. ob_get_contents() joga tudo que foi gravado no buffer até aquele ponto dentro de uma variável e ob_end_clean() encerra a gravação e limpa o buffer. Assim podemos aproveitar a variável $output para efe...

Mobile - Detectando se o dispositivo é mobile ou não por php e javascript

Se antigamente nosso problema era saber se a meia duzia de browsers rodaria direito nosso javascript ou não (o que o JQuery resolveu para nós) hoje temos uma fauna gigantesca de dispositivos e browsers, fruto da expansão do mobile. Nosso desafio é conseguir detectar que dispositivo está acessando o site ou aplicação e redirecionar o usuário para uma página ou URL que possua as configurações e layout corretos para o mesmo. Existem algumas linhas de pensamento que acreditam que o que deve se adaptar automaticamente às dimensões do dispositivo é o css, sem muita ou nenhuma interferência de detecção (design responsivo) como a que proponho aqui, porém eu prefiro utilizar a abordagem da detecção e de versões diferentes do site para dispositivos mobile e web convencional, pois acredito que o problema não é somente o layout mas também o peso da navegação, o tipo de conteúdo direcionado e etc. Há um bom tempo que venho pesquisando um meio bacana de fazer isto, que fosse confiável e que n...

Linux - Dicas rápidas sobre Lynx

Imagem
Lynx é um navegador baseado em texto, ou seja, ele não tem uma interface gráfica e nem exibe gráficos (imagens, html renderizado, etc). Mas então, podem me perguntar, para que usar este programa? Bem, o Lynx é muito utilizado para outras tarefas mais 'robóticas' ou dentro de programas. Em um cronjob do linux, por exemplo, o lynx pode ser utilizado para 'chamar' uma URL de tempos em tempos e rodar uma tarefa. Em um programa o lynx pode ler um site e pegar todos os links dele, sem a necessidade do programa ter de ler todo o HTML diretamente e tentar encontrar os links com expressões regulares ou qualquer outra técnica. Outra utilização do Lynx é visualizar uma página da mesma forma que um crawler, ou um robô de indexação como o do google, a enxerga. Isto ajuda no planejamento do SEO de páginas ou mesmo no planejamento ou implantação de acessibilidade para portadores de deficiência. O lynx é bem útil mas acredito que é pouco utilizado. Sendo assim, a ideia deste po...

Php - Criando uma library Curl no Codeigniter

Vamos começar criando uma classe Curl.php. A ideia é que esta classe possa fazer requisições POST através do PHP, ao invés de utilizar um formulário, por exemplo. Para começar a trabalhar com Libraries devemos ter em mente algumas regras do Codeigniter: - Nomes de arquivos devem ter a primeira letra maiuscula. Exemplo:  Myclass.php - A declaração da classe deve ter a primeira letra maiuscula. Exemplo:  class Myclass - O nome da classe e o nome do arquivo devem ser os mesmos. - O Arquivo deve ficar dentro de 'application/libraries', caminho existente dentro da instalação do Codeigniter. Com estes pré-requisitos em mente podemos começar a trabalhar. Vamos colocar nosso arquivo "Curl.php" dentro de 'application/libraries' O conteúdo do arquivo é o que segue abaixo: <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Curl { private $ch; public function post($url,$data) { echo $url."...