Mostrando postagens com marcador php. Mostrar todas as postagens
Mostrando postagens com marcador php. Mostrar todas as postagens

terça-feira, 12 de maio de 2015

Teste de estudo para certificação

What the following code will print out?

 echo true ? 'a':true ? 'b' : 'c';  


//resposta: b
//a condição "true ? 'a':true" é avaliada como true
//e por isso retorna 'b', pois é a opção da esquerda

sexta-feira, 1 de agosto de 2014

Executando um comando como Root via php

Assim:

 <?php  
 $outPut = shell_exec("echo senha | sudo -S apt-get -y install openssh-server");  
 echo "<pre>$outPut</pre>";  
 ?>  

O detalhe é o 'echo' antes, pra enviar a senha pro sudo, e o -y, pra não pedir confirmação sobre a instalação.

sexta-feira, 21 de fevereiro de 2014

Utilizando o encurtador de url do Google com php

Primeiro, precisamos do cliente da api do google em php, no seguinte link:

https://github.com/google/google-api-php-client

Incluímos a biblioteca e instanciamos a classe, assim:

 set_include_path(get_include_path() . PATH_SEPARATOR . '/home/ferramen/public_html/src');  
 require_once 'Google/Client.php';  
 require_once 'Google/Service/Urlshortener.php';  
 $client = new Google_Client();  
 $client->setApplicationName("API Project");//nome do seu projeto  
 $client->setDeveloperKey("sua_developer_key");sua chave de autenticação no google developer  
 $service = new Google_Service_Urlshortener($client);  
 $url = new Google_Service_Urlshortener_Url();  
 $url->longUrl = $link; //$link contém a url original  
 $shortUrl = $service->url->insert($url);  


Após isso, é só acessar as propriedades do objeto $shorUrl pra pegar o link encurtado. Não lembro agora quais são, mas um var_dump nesse objeto resolve.

Também precisa ter uma conta no Google Developers, pra pegar a chave de autenticação.

quinta-feira, 17 de outubro de 2013

Aumentando o tamanho do array _POST

No .htaccess, assim:
php_value max_input_vars 3000

Claro que o jeito certo é não deixar um formulário com 1000 inputs, que é o valor padrão, mas é mais fácil fazer isso do que revisar mais scripts jurássicos feitos por terceiros e quartos.

sexta-feira, 16 de agosto de 2013

Escrevendo a data e hora atuais do servidor

Mexer com datas e php parece ser uma arte, algo que poucos dominam.

Eu, por exemplo, não sou um deles. Mas eu vou tentando.

Primeiro, precisamos setar o locale do servidor para nosso querido idioma:

 setlocale(LC_ALL, 'pt_BR.utf8'); 


Se o servidor for windows, só pra variar, tem que ser de um jeito diferente:
 setlocale(LC_ALL, 'ptb');  


Depois, usamos strftime pra escrever a data atual.

 echo strftime('%A, %d de %B de %Y, %H:%M');  

O resultado fica:
sexta-feira, 16 de agosto de 2013, 15:02

terça-feira, 21 de maio de 2013

Time is never on my side

Pegando uma data do banco, adicionando dias e retornando ela formatada:
 $vcto = new DateTime($item['data']);  //$item['data'] contém uma data no formato YYYY-MM-DD HH:mm:ss
 $vcto->modify('+1 month');  //período de tempo para adicionar
 echo $vcto->format('d/m/Y');  //escrevendo a data no formato d/m/Y

Não sei quem inventou que as datas tem que ser escritas com o ano na frente.
Acho que isso só faz sentido se o programador acabou de acordar de um coma de seilá, 5 anos, e a primeira coisa que ele fez foi consultar a hora no servidor usando a função NOW().

quarta-feira, 27 de março de 2013

Gerando documentação para funções no Netbeans

Basta colocar este bloco de comentários antes da definição da função:

1:  /**   
2:   * contarDiffHoras  
3:   *  
4:   * conta a diferença em horas entre a data informada e a data do sistema  
5:   * obs: sempre uma data no passado  
6:   *  
7:   * @param string $data a data para comparar no formato d/m/Y H:i  
8:   */  


Fica assim:

1:  /**   
2:   * contarDiffHoras  
3:   *  
4:   * conta a diferença em horas entre a data informada e a data do sistema  
5:   * obs: sempre uma data no passado  
6:   *  
7:   * @param string $data a data para comparar no formato d/m/Y H:i  
8:   */  
9:  function contarDiffHoras($data){  
10:       $data = date_create_from_format('d/m/Y H:i', $data);//data informada  
11:       $now = date_create();//data atual  
12:       $diff = date_diff($now, $data);//calcula a diferença entre as datas  
13:       return ($diff->format('%a') * 24) + $diff->format('%H');//calcula a diferença em horas  
14:  }  

E, no Netbeans, aparece assim:

terça-feira, 22 de janeiro de 2013

Operações com datas em PHP do jeito quase certo

Há uns 2 meses atrás, fiz uma função que somava 10 dias em uma certa data.
Fiz assim:
 (date('d')+10).date('/m/Y');  

É até vergonhoso ver que fiz algo de um jeito tão jurássico, há apenas 2 meses. Só percebi o problema porque um dos vendedores tentou cadastrar um orçamento com a data 32/01/2013...

Como agora tem toda essa história de 'php do jeito certo', decidi ver qual o jeito certo de se fazer, que é mais ou menos o seguinte:
 $hoje = date_create();  
 date_add($hoje, date_interval_create_from_date_string('10 days'));  
 echo $hoje->format('d/m/Y');  


Mas, ao testar em produção, deu erro, porque a versão do php do servidor está desatualizada (novidade...), e a função date_add só existe a partir da versão 5.3.0. Aí tive que tentar o segundo jeito certo, que é algo assim:

 $date = date_create();  
 date_modify($date, '+10 day');  
 echo date_format($date, 'd/m/Y');  

sexta-feira, 11 de janeiro de 2013

Exportando tabelas para excel e acertando o formato dos campos

Como 'gerar' um arquivo excel com php, todo mundo já sabe:

$arquivo = "export".date("dmY_His").".xls";
header("Content-Type: text/plain");
header("Content-Disposition: attachment; filename=\"$arquivo\";"); 
Mas como fazer com que as colunas fiquem com os tipos de dados certos, como por exemplo, os campos de data?

Simples: Criando o seguinte css:
.date {
  mso-number-format:"Short Date";
}
E aplicando este estilo na célula da tabela que contém o valor que deve ser formatado.

Aqui tem os formatos aceitos:

http://cosicimiento.blogspot.com.br/2008/11/styling-excel-cells-with-mso-number.html

Fonte:
http://cosicimiento.blogspot.com.br/2008/11/styling-excel-cells-with-mso-number.html
http://stackoverflow.com/questions/354476/html-to-excel-how-can-tell-excel-to-treat-columns-as-numbers

quinta-feira, 20 de dezembro de 2012

Debugando erros Episódio 1

Pra quando o script trava sem nenhum motivo aparente:

    error_reporting(E_ALL);
    ini_set('display_errors','on');

terça-feira, 22 de maio de 2012

Agrupar campos de formulários


Na verdade, não é bem agrupar, e sim colocar dentro de arrays, o que não deixa de ser um certo tipo de agrupamento.
Exemplo: temos esse formulário assim:
Campo 1
Campo 2
Campo 3
Campo 4
Campo 5
O retorno desse formulário vai sair assim:
Array
(
[campos] => Array
(
[campo1] => valor 1
[campo2] => valor 2
[campo3] => valor 3
[campo4] => valor 4
[campo5] => valor 5
)

)


Pena que não dá pra colocar mais sub-arrays, mas já é algo.

domingo, 15 de abril de 2012

Printf





$num = 3;
$location = 'tree';
$format = 'There are %d monkeys in the %s';
printf($format,$num,$location);


O comando printf recebe um formato de string, e variáveis que serão utilizadas para montar a string que será retornada.

Os caracteres % serão substituídos pelos parâmetros informados, na ordem em que forem aparecendo.

O exemplo acima retorna:

There are 3 monkeys in the tree

Caso os parâmetros não sejam informados na ordem em que eles precisam ser substituídos, precisamos informar qual é o parâmetro que será utilizado:


$format = 'The %2$s contains %1$d monkeys';
printf($format,$num,$location);


O exemplo acima retorna:

The tree contains 3 monkeys


Os tipos de formação são os seguintes:

%b - Binário

%d - Decimal

%f - Float

%o - Octal

%e - Notação Científica

%s - String



Sintaxe Heredoc


É utilizada para criar uma string. Ela se comporta como uma string entre aspas duplas, ou seja, o conteúdo de variáveis será exibido.
Demarcamos o início de uma string assim:


<<TESTE
para demarcar o fechamento, utilizamos exatamente o mesmo texto que foi informado na abertura, sem os caracteres <<<.

 

$array[] = '1';
$array[] = '2';

$string = <<<TESTE
teste de alguma coisa
em várias linhas
item do array: $array[0]
outro item do array: $array[1]
TESTE;


Resultado:

teste de alguma coisa em várias linhas item do array: 1 outro item do array: 2

segunda-feira, 26 de março de 2012

Pegando a imagem de um vídeo do Youtube


Outra coisa que precisei fazer hoje, foi pegar a miniatura de um vídeo do youtube. Consegui usando php e expressões regulares (viu como serviu pra algo o livro?):
 $embed = '';//código que o youtube disponibiliza. pode ser usado tanto o iframe quanto o embed antigo, com ou sem https.  
 preg_match('/http(s)?:\/\/www.youtube.com\/(v|embed)\/[a−zA−Z0−9]1,}/',$embed,$array_embed); //expressão regular pra pegar só o link e jogar no $array_embed  
 $id_youtube = end(explode('/',$array_embed[0]));//pega somente a última parte do link, que é o código do vídeo $preview_video = "http://img.youtube.com/vi/$id_youtube/0.jpg";//monta o link da imagem. Trocando o 0.jpg por 1 ou 2.jpg dá pra pegar as imagens em tamanhos diferentes.  

sábado, 3 de março de 2012

Continue


O continue é semelhante ao break, com a diferença que o break interrompe a execução do laço (no caso, foreach), e o continue apenas pula a execução atual.

Exemplo:


$arr = array(1, 2, 3);
foreach($arr as $number) {
if($number == 2) {
continue;
}
print "$number,";
}

retorno:1,3,
Se trocássemos o continue por break, o retorno seria apenas 1.

Switch


O comando switch faz um teste e executa um bloco de código conforme o resultado deste teste. Utiliza-se o break para encerrar o bloco de código a ser executado. Caso nenhum dos testes seja verdadeiro, executa o bloco default. O bloco default não precisa do break.

Exemplo:


$teste = 3;
switch($teste){
case 1:
echo 1;
break;
case 2:
echo 2;
break;
default:
echo 0;
}


Do-while


O comando do-while é parecido com o while, com a diferença que o teste é feito após executar o bloco de comando.
Assim, no caso abaixo, o bloco é executado só uma vez, pois $i não é maior que zero.

Exemplo:


$i = 0;
do {
echo $i;
} while ($i > 0);



Utilizando o while, o bloco não seria executado nenhuma vez.


$i = 0;
while($i>0)
{
echo $i;
}


Operadores ternários


O operador ternário é formado por um teste ($v1==true), e duas opções. Caso o teste seja verdadeiro, será retornado a opção à esquerda. Caso seja falso, será retornado a opção à direita.

Exemplo:

$v1 = false;
$v2 = ($v1 == true) ? 'sim' : 'nao';
echo $v2;

retorno: nao

Operador Backtick


O conteúdo entre os acentos graves (não confundir com aspas simples) é executado como o comando shell_exec(), que executa um comando no console.

Exemplo:


$output = `ver`;
echo "<pre>$output</pre>";


/* retorno:
Microsoft Windows [versÆo 6.1.7601]