Prof. Daniel Arndt Alves Introduo ao Desenvolvimento de Sistemas Web com PHP Programa de Vero IME-USP 2013 Manipulao de Strings, Arrays e Datas no PHP Introduo ao Desenvolvimento de Sistemas Web com PHP - Programa de Vero IME-USP 2013 Prof. Mauricio Garcia Nascimento - mauricio@ime.usp.br - todos os direitos reservados Prof. Daniel Arndt Alves daniel.alves@mackenzie.br Interpolao de strings $local = 'mundo'; echo 'Al $local'; // Al $local echo "Al $local"; // Al mundo Impresso de caracteres especiais echo 'Isto um \'teste\' '; // Isto um 'teste' $a = 10; echo "Valor de \$a = \"$a\" "; // Valor de $a = "10" 2 Introduo ao Desenvolvimento de Sistemas Web com PHP - Programa de Vero IME-USP 2013 Prof. Mauricio Garcia Nascimento - mauricio@ime.usp.br - todos os direitos reservados Prof. Daniel Arndt Alves daniel.alves@mackenzie.br Funes de strings ! http://php.net/strings ! ~100 funes nativas! ! Exemplo: http://php.net/strlen 3 Introduo ao Desenvolvimento de Sistemas Web com PHP - Programa de Vero IME-USP 2013 Prof. Mauricio Garcia Nascimento - mauricio@ime.usp.br - todos os direitos reservados Prof. Daniel Arndt Alves daniel.alves@mackenzie.br Tamanho de uma string int strlen (str $str) $a = "teste"; echo strlen($a); // 5 Funo strlen 4 Introduo ao Desenvolvimento de Sistemas Web com PHP - Programa de Vero IME-USP 2013 Prof. Mauricio Garcia Nascimento - mauricio@ime.usp.br - todos os direitos reservados Prof. Daniel Arndt Alves daniel.alves@mackenzie.br Parte de uma string str substr (str $str, int $start [, int $length] ) echo substr('abcdef', 1); // bcdef echo substr('abcdef', 1, 3); // bcd echo substr('abcdef', 0, 4); // abcd echo substr('abcdef', -2, 1); // e echo substr('abcdef', -3); // def Funo substr 5 Introduo ao Desenvolvimento de Sistemas Web com PHP - Programa de Vero IME-USP 2013 Prof. Mauricio Garcia Nascimento - mauricio@ime.usp.br - todos os direitos reservados Prof. Daniel Arndt Alves daniel.alves@mackenzie.br Busca de sub-string em uma string int strpos (str $str, str $busca [, int $offset] ) $str = 'teste'; echo strpos($str, 'es'); // 1 echo strpos($str, 'tes'); // 0 echo strpos($str, 'ab'); // false Funo strpos 6 Introduo ao Desenvolvimento de Sistemas Web com PHP - Programa de Vero IME-USP 2013 Prof. Mauricio Garcia Nascimento - mauricio@ime.usp.br - todos os direitos reservados Prof. Daniel Arndt Alves daniel.alves@mackenzie.br Substituio de sub-strings em uma string mix str_replace (mix $search, mix $replace, mix $subject) $str = 'Ol #local#'; $s1 = str_replace('#local#', 'mundo', $str); // ol mundo $s2 = str_replace('a', 'A', 'abcabc'); // AbcAbc Funo str_replace 7 Introduo ao Desenvolvimento de Sistemas Web com PHP - Programa de Vero IME-USP 2013 Prof. Mauricio Garcia Nascimento - mauricio@ime.usp.br - todos os direitos reservados Prof. Daniel Arndt Alves daniel.alves@mackenzie.br Formatao de nmeros str number_format (float $number [, int $decimals [, str $dec_point, str $thousands_sep]]) $num = 1234.567; echo number_format($num, 2); // 1,234.57 echo number_format($num, 2, ',', '.'); // 1.234,57 echo number_format($num, 2, ',', ''); // 1234,57 Funo number_format 8 Introduo ao Desenvolvimento de Sistemas Web com PHP - Programa de Vero IME-USP 2013 Prof. Mauricio Garcia Nascimento - mauricio@ime.usp.br - todos os direitos reservados Prof. Daniel Arndt Alves daniel.alves@mackenzie.br echo $str printf (str $str [, mix $args, ...] ) str sprintf (str $str [, mix $args, ...] ) var_dump ($str) echo 'teste'; printf('o valor da %s %d', 'soma', 100); $txt = sprintf('o valor da %s %d', 'soma', 100); Impresso / formatao de strings 9 Introduo ao Desenvolvimento de Sistemas Web com PHP - Programa de Vero IME-USP 2013 Prof. Mauricio Garcia Nascimento - mauricio@ime.usp.br - todos os direitos reservados Prof. Daniel Arndt Alves daniel.alves@mackenzie.br str rtrim (str $str [, str $charlist] ) str ltrim (str $str [, str $charlist] ) str trim (str $str [, str $charlist] ) echo trim(' abc '); // "abc" echo rtrim('abcxxxx', 'x'); // "abc" Limpeza de strings 10 Introduo ao Desenvolvimento de Sistemas Web com PHP - Programa de Vero IME-USP 2013 Prof. Mauricio Garcia Nascimento - mauricio@ime.usp.br - todos os direitos reservados Prof. Daniel Arndt Alves daniel.alves@mackenzie.br str strtolower (str $str) str strtoupper (str $str) str ucfirst (str $str) echo strtolower('TESTE'); // "teste" echo strtoupper('Teste'); // "TESTE" echo ucfirst('ol mundo'); // "Ol mundo" Caracteres maisculos / minsculos 11 Introduo ao Desenvolvimento de Sistemas Web com PHP - Programa de Vero IME-USP 2013 Prof. Mauricio Garcia Nascimento - mauricio@ime.usp.br - todos os direitos reservados Prof. Daniel Arndt Alves daniel.alves@mackenzie.br $usuario = ' RCostA '; $s1 = strtolower( trim($usuario) ); $email = 'usuario@site.com.br'; $s2 = substr($email, 0, strpos($email, '@') ); $s3 = substr($email, strpos($email, '@')+1 ); Encadeamento de funes 12 Introduo ao Desenvolvimento de Sistemas Web com PHP - Programa de Vero IME-USP 2013 Prof. Mauricio Garcia Nascimento - mauricio@ime.usp.br - todos os direitos reservados Prof. Daniel Arndt Alves daniel.alves@mackenzie.br Arrays no PHP $vazio = array(); $a = array(1, 20, 30, 100, -4, 5); $b = array('a', 'teste', 'Ol Mundo'); 1 20 30 100 -4 5 0 1 2 3 4 5 $a = 13 ndice do elemento Introduo ao Desenvolvimento de Sistemas Web com PHP - Programa de Vero IME-USP 2013 Prof. Mauricio Garcia Nascimento - mauricio@ime.usp.br - todos os direitos reservados Prof. Daniel Arndt Alves daniel.alves@mackenzie.br Acesso aos elementos do Array Realizado atravs do seu [ndice] $a = array(1, 20, 30, 100, -4, 5); echo $a[0]; echo $a[4]; $soma = $a[1] + 20; $a[3]++; $a[5] += 10; $idx = 2; echo $a[$idx]; $soma = $a[$idx] + $a[$idx+1]; echo $a[$a[0]]; 1 20 30 100 -4 5 0 1 2 3 4 5 $a = 14 Introduo ao Desenvolvimento de Sistemas Web com PHP - Programa de Vero IME-USP 2013 Prof. Mauricio Garcia Nascimento - mauricio@ime.usp.br - todos os direitos reservados Prof. Daniel Arndt Alves daniel.alves@mackenzie.br Insero de elementos $a = array(1, 20, 30, 100, -4, 5); $a[] = 8; $a[] = 10; $a[] = $a[0] + $a[1]; 1 20 30 100 -4 5 0 1 2 3 4 5 $a = 8 10 21 6 7 8 15 Introduo ao Desenvolvimento de Sistemas Web com PHP - Programa de Vero IME-USP 2013 Prof. Mauricio Garcia Nascimento - mauricio@ime.usp.br - todos os direitos reservados Prof. Daniel Arndt Alves daniel.alves@mackenzie.br Declarao de Array $a = array(10=>10, 20=>1, 3=>100, 39=>-1); $b = array(1=>'a', 100=>'teste', 5=>'Ol'); $c = array('a'=>5, 'b'=>20, 'cod'=>15); 10 1 100 -1 10 20 3 39 $a = a teste Ol 1 100 5 $b = 5 20 15 a b cod $c = 16 Introduo ao Desenvolvimento de Sistemas Web com PHP - Programa de Vero IME-USP 2013 Prof. Mauricio Garcia Nascimento - mauricio@ime.usp.br - todos os direitos reservados Prof. Daniel Arndt Alves daniel.alves@mackenzie.br Acesso aos elementos do Array $a = array(10=>10, 20=>1, 3=>100, 39=>-1); $b = array(1=>'a', 100=>'teste', 5=>'Ol'); $c = array('a'=>5, 'b'=>20, 'cod'=>15); echo $a[39]; $idx = 3; echo $a[$idx] + 20; echo $b[1]; $frase = $b[5] . $b[100]; echo $c['b']; echo $c['a'] + $c['cod']; 17 10 1 100 -1 10 20 3 39 $a = a teste Ol 1 100 5 $b = 5 20 15 a b cod $c = Introduo ao Desenvolvimento de Sistemas Web com PHP - Programa de Vero IME-USP 2013 Prof. Mauricio Garcia Nascimento - mauricio@ime.usp.br - todos os direitos reservados Prof. Daniel Arndt Alves daniel.alves@mackenzie.br Declarao de Array $a = array(1, 2, 3); $b = array('joo', 'maria'); $multi = array($a, $b); 18 maria joo 0 1 $multi = 1 2 3 0 1 2 Introduo ao Desenvolvimento de Sistemas Web com PHP - Programa de Vero IME-USP 2013 Prof. Mauricio Garcia Nascimento - mauricio@ime.usp.br - todos os direitos reservados Prof. Daniel Arndt Alves daniel.alves@mackenzie.br Acesso aos elementos do Array $a = array(1, 2, 3); $b = array('joo', 'maria'); $multi = array($a, $b); echo $a[0]; echo $b[1]; echo $multi[0]; echo $multi[0][1]; $frase = $multi[1][0] . ' e ' . $multi[1][1]; 19 maria joo 0 1 1 2 3 0 1 2 Introduo ao Desenvolvimento de Sistemas Web com PHP - Programa de Vero IME-USP 2013 Prof. Mauricio Garcia Nascimento - mauricio@ime.usp.br - todos os direitos reservados Prof. Daniel Arndt Alves daniel.alves@mackenzie.br Declarao de Array $regs = array( 1 => array('nome' => 'joo', 'idade' => 15), 2 => array('nome' => 'maria', 'idade' => 25), 8 => array('nome' => 'antonio', 'idade' => 35) ); echo $regs[2]['nome']; echo $regs[10]['idade']; 20 Introduo ao Desenvolvimento de Sistemas Web com PHP - Programa de Vero IME-USP 2013 Prof. Mauricio Garcia Nascimento - mauricio@ime.usp.br - todos os direitos reservados Prof. Daniel Arndt Alves daniel.alves@mackenzie.br Iterao de elementos de um Array ! Lao de repetio: foreach ! Exclusivo para Arrays ! Executa bloco do lao para cada elemento do Array ! A cada repetio, recupera elemento atual do Array $regs = array(10, 20, -5, 100); foreach($regs as $reg) { echo $reg; } $regs = array('a'=>10, 'b'=>20, 'c'=>15); foreach($regs as $k => $reg) { echo $k . ':' . $reg; } 21 Introduo ao Desenvolvimento de Sistemas Web com PHP - Programa de Vero IME-USP 2013 Prof. Mauricio Garcia Nascimento - mauricio@ime.usp.br - todos os direitos reservados Prof. Daniel Arndt Alves daniel.alves@mackenzie.br Quantidade de elementos em um Array int count (array $arr) $a = array(); echo count($a); // 0 $b = array(1, 2, 3); echo count($b); // 3 $c = array(array(1,2), array(3,4)) echo count($c); // ? Funo count 22 Introduo ao Desenvolvimento de Sistemas Web com PHP - Programa de Vero IME-USP 2013 Prof. Mauricio Garcia Nascimento - mauricio@ime.usp.br - todos os direitos reservados Prof. Daniel Arndt Alves daniel.alves@mackenzie.br Busca de elemento no array bool in_array (mix $val, array $arr) $a = array('a' => 1, 'b' => 3, 'cod' => 10); echo in_array(20, $a); if (in_array('joo', $a)) ... Funo in_array 23 Introduo ao Desenvolvimento de Sistemas Web com PHP - Programa de Vero IME-USP 2013 Prof. Mauricio Garcia Nascimento - mauricio@ime.usp.br - todos os direitos reservados Prof. Daniel Arndt Alves daniel.alves@mackenzie.br Converso de array para string str implode (str $val, array $arr) $a = array('a', 'b', 'c'); echo implode('@', $a); // "a@b@c" echo implode('', $a); // "abc" Funo implode 24 Introduo ao Desenvolvimento de Sistemas Web com PHP - Programa de Vero IME-USP 2013 Prof. Mauricio Garcia Nascimento - mauricio@ime.usp.br - todos os direitos reservados Prof. Daniel Arndt Alves daniel.alves@mackenzie.br Converso de string para array array explode (str $val, str $txt) $a = "10-20-30-40-50"; $b = explode('-', $a); // array(10, 20, 30, 40, 50) $ip = "10.128.0.10"; $b = explode('.', $ip); // array(10, 128, 0, 10) Funo explode 25 Introduo ao Desenvolvimento de Sistemas Web com PHP - Programa de Vero IME-USP 2013 Prof. Mauricio Garcia Nascimento - mauricio@ime.usp.br - todos os direitos reservados Prof. Daniel Arndt Alves daniel.alves@mackenzie.br ! Por elemento (reconstri ref. ndice) sort (array $arr) rsort (array $arr) ! Por elemento (preserva ref. ndice) asort (array $arr) arsort (array $arr) ! Por ndice, (preserva ref. ndice) ksort (array $arr) krsort (array $arr) Ordenao de elementos do Array 26 Introduo ao Desenvolvimento de Sistemas Web com PHP - Programa de Vero IME-USP 2013 Prof. Mauricio Garcia Nascimento - mauricio@ime.usp.br - todos os direitos reservados Prof. Daniel Arndt Alves daniel.alves@mackenzie.br ! No representada por um tipo de dado especfico ! Nmero inteiro ! Forma de contagem do tempo ! 1 unidade = 1 segundo ! Unix Timestamp ! Marco zero em 01/01/1970 00:00:00 GMT ! Pode ser representado por valores negativos 0 1 2 ... -1 -2 ... 01/01/1970 00:00:00 GMT tempo 27 Datas no PHP Introduo ao Desenvolvimento de Sistemas Web com PHP - Programa de Vero IME-USP 2013 Prof. Mauricio Garcia Nascimento - mauricio@ime.usp.br - todos os direitos reservados Prof. Daniel Arndt Alves daniel.alves@mackenzie.br Data Unix TimeStamp 01/01/1970 00:00:01 1 01/01/1970 00:01:00 60 01/01/1970 01:00:00 3600 31/12/1969 00:00:00 -86.400 (24*3600) 01/01/2000 00:00:00 946.684.800 17/01/2011 13:00:00 1.295.269.200 28 Datas no PHP Introduo ao Desenvolvimento de Sistemas Web com PHP - Programa de Vero IME-USP 2013 Prof. Mauricio Garcia Nascimento - mauricio@ime.usp.br - todos os direitos reservados Prof. Daniel Arndt Alves daniel.alves@mackenzie.br Diferena entre datas //segundos entre as 2 datas $data_fim - $data_inicio //horas entre as 2 datas ($data_fim - $data_inicio) / 3600 /* "17/09/2007 20:15:00 - 01/01/2007 00:00:00" 1.190.060.100 1.167.609.600 = 22.450.500 segs. 22.450.500 / 3.600 = 6.236 hrs. */ 29 Introduo ao Desenvolvimento de Sistemas Web com PHP - Programa de Vero IME-USP 2013 Prof. Mauricio Garcia Nascimento - mauricio@ime.usp.br - todos os direitos reservados Prof. Daniel Arndt Alves daniel.alves@mackenzie.br Recuperar Timestamp atual do sistema int time () echo time(); // data e hora atual (timestamp) $t = time() + 60*60*24; // +24hrs Funo time 30 Introduo ao Desenvolvimento de Sistemas Web com PHP - Programa de Vero IME-USP 2013 Prof. Mauricio Garcia Nascimento - mauricio@ime.usp.br - todos os direitos reservados Prof. Daniel Arndt Alves daniel.alves@mackenzie.br Recuperar informaes sobre um Timestamp array getdate ( [int $timestamp] ) $arr = getdate(); $ts = strtotime('06/17/2003 21:58:40'); $arr = getdate($ts); Array ( [seconds] => 40 [minutes] => 58 [hours] => 21 [mday] => 17 [wday] => 2 [mon] => 6 [year] => 2003 [yday] => 167 [weekday] => Tuesday [month] => June [0] => 1055901520 ) Funo getdate 31 Introduo ao Desenvolvimento de Sistemas Web com PHP - Programa de Vero IME-USP 2013 Prof. Mauricio Garcia Nascimento - mauricio@ime.usp.br - todos os direitos reservados Prof. Daniel Arndt Alves daniel.alves@mackenzie.br Formatar um Timestamp para um formato textual str date (str $formato [, int $timestamp] ) // 18/09/2007 20:50:02 echo date('d/m/Y H:i:s'); Funo date Outros formatos em http://php.net/date 32 Introduo ao Desenvolvimento de Sistemas Web com PHP - Programa de Vero IME-USP 2013 Prof. Mauricio Garcia Nascimento - mauricio@ime.usp.br - todos os direitos reservados Prof. Daniel Arndt Alves daniel.alves@mackenzie.br Valida uma data til para checagem de data fornecida pelo usurio bool checkdate (int $mon, int $day, int $year) checkdate(1, 1, 2006); // true checkdate(1, 40, 2006); // false Funo checkdate 33 Introduo ao Desenvolvimento de Sistemas Web com PHP - Programa de Vero IME-USP 2013 Prof. Mauricio Garcia Nascimento - mauricio@ime.usp.br - todos os direitos reservados Prof. Daniel Arndt Alves daniel.alves@mackenzie.br Calcular um Timestamp int mktime (int $hour, int $min, int $sec, int $mon, int $day, int $year) mktime(0, 0, 0, 12, 25, 2006); // 25/12/2006 00:00:00 mktime(10, 0, 0, 1, 1, 2007); // 01/01/2007 10:00:00 mktime(0, 0, 0, 15, 1, 2006); // 01/03/2007 00:00:00 mktime(0, 0, 0, 5, 0, 2006); // 30/04/2006 00:00:00 Funo mktime 34