'; echo ''; echo 'Tábua de Maré - Morro de São Paulo'; echo ''; echo ''; echo ''; echo ''; } else echo ''; ?>

'; ?>

Tábua de Marés

date('m',$data_fim)) || (date('Y',$data_ini) <> date('Y',$data_fim))) //se a tabua for de mais de um mes $completo =1; //melhor mostrar a data com dia e ano else $completo =0; //pode mostrar a data so com dia echo ' Mês: '; echo ''; echo ' Ano: '; echo ''; echo ' Porto: '; echo ''; ?> '; else echo '
versão para impressão '; ?>
'; //echo $data_ini; //echo date('d/m/Y',$data_ini); //echo '
'; //echo $data_fim; //echo date('d/m/Y',$data_fim); if(file_exists($nomearquivo)) $bruto = file_get_contents($nomearquivo); //var que contem todos os dados brutos else $bruto = ' '; $ar_sem = arraydemare($bruto, $data_ini, $data_fim, $lingua); if (count ($ar_sem) > 0) imprimetabua($ar_sem, $lingua, $completo); else echo '
Infelizmente não temos dados para este período neste porto.

'; ?>
Ententendo a tábua de marés:
Cada maré alta ou baixa tem seu horário e uma altura específica, indicada em metros, acima do "nível mínimo do mar". No exemplo abaixo, dia 06, sexta-feira, houveram duas marés baixas: uma às 11:27 da manhã e outra às 23:48 da noite. Já as marés altas foram às 05:17 da manhã e às 17:39. A maré mais baixa do dia foi de apenas 10cm, e a mais alta, 2,02m.

06
Sexta
05:17  2,02m
11:27  0,1m
17:39  1,97m
23:48  0,13m
 <- dia
<- maré alta
<- maré baixa
<- maré alta
<- maré baixa

Atenção: as informações acima não devem ser utilizadas para fins de navegação! Procure a autoridade portuária da região para obter dados oficiais.
'."\n"; //tinha antes:border="0" cellpadding="0" cellspacing="0" $primeira_semana=1; //avisa que é a primeira semana que esta sendo desenhada foreach ($ar_semanas as $semana) { echo "\n"; if ($primeira_semana == 1) { $n = 7 - (count($semana)); //quantos dias dessa semana nao tem dados for ($m = 1; $m <= $n; $m++) { echo ' '; } } foreach ($semana as $i => $dia) { $primeira_semana = 0; echo ''; imprimedia($dia, $lingua, $completo); echo ''; } echo "\n"; } echo "\n"; }//fim function imprimetabua function imprimedia($dia, $lingua, $completo) { if ($lingua == 'pt') $dias_da_semana = array('Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado', 'Domingo'); //configs: $cla_dia = 'mare-dia'; $cla_alta = 'mare-alta'; $cla_baixa = 'mare-baixa'; $cla_sem = 'mare-semana'; //fim configs echo '
'; if ($completo == 0) echo date('d',$dia[0]['unix']);//mostra o dia do mes else echo date('d/m/y',$dia[0]['unix']);//mostra o dia do mes echo '
'; //echo '
' echo '
'; echo $dias_da_semana[date('N',$dia[0]['unix'])-1]; //mostra o dia da semana echo '
'; foreach ($dia as $mare) { if ($mare['tipo'] == 'a') echo '
'; else echo '
'; echo $mare['hora']; echo ' '; echo $mare['altura']; echo 'm'; echo '
'; //echo '
'; } //print_r($dia); }//fim function imprimedia function arraydemare($stringdata, $inicio, $fim, $lingua) { //$ar_d = explode ('|',$stringdata); //cria array, onde cada elemento eh um dia //cada elemento tem essa cara: 1341630000,"July 7, 2012 06:02:00",1.95,"a" $ar_d = array(); //essa parte até ##A foi incluida quando mudou a fonte dos dados de mare para solucao caseira $ar_bl = explode ("\r\n\r\n",$stringdata); //explore o array onde tem linha em branco foreach($ar_bl as $bb) //para cada bloco de um dia { $blocoexplodido = explode("\r\n", $bb);//explode cada bloco pela quebra de linha $linha1 = array_shift($blocoexplodido);//pega a primeira linha, e remove do array $linhaexplodida = explode(" ",$linha1); $datatexto= $linhaexplodida[1];//a data em formato texto $dataexp= explode("-",$datatexto);//explodido pelo separador de dia-mes-ano @$dataunix= mktime(0, 0, 0, $dataexp[1], $dataexp[2], $dataexp[0] );//converte a data para formato unix (nes, dia, ano) foreach($blocoexplodido as $linhamare) { $partes = explode("Tide:", $linhamare); if (trim($partes[0]) == "High") $sobe = "a"; if (trim($partes[0]) == "Low") $sobe = "b"; $fragmentos = explode("HB",trim($partes[1])); $horatrim = trim($fragmentos[0]); if (strlen($horatrim)<5) $horatrim = "0".$horatrim; $altura = floatval(trim($fragmentos[1])); $altura = $altura * 0.3048; $alturatext = number_format($altura,2); $elemento = $dataunix.",".'"'.date("F d, Y",$dataunix)." ".$horatrim."".'",'.$alturatext.',"'.$sobe.'"'; //$elemento = $dataunix.",".'"'.date("F d, Y",$dataunix)." ".$horatrim."".'",'.trim($fragmentos[1]).',"'.$sobe.'"'; array_push($ar_d, $elemento); //echo ("
- "); //echo $linhamare; //echo " | "; //echo $elemento; } } //print_r($ar_d); //##A fim da mudanca $array_mare = array(); //array que contera cada alta ou baixa de mare no periodo if (count($ar_d) >2) foreach ($ar_d as $i => $dia) { $temp = array(); $k = explode (',',$dia); //separa por virgula $temp['unix'] = $k[0]; //para extrair a data unix $m = explode ('"',$dia); //explode por aspas duplas $temp['tipo'] = $m[3]; //"a"=alta ou "b"=baixa $n = explode(',',$m[2]); if ($lingua == 'en') $temp['altura'] = $n[1]; else $temp['altura'] = str_replace('.',',',$n[1]); //aqui falta fazer substituicao de string, pra trocar o ponto pela virgula //$m[1] contem a data e hora (que tava entre aspas) $o = explode (' ',$m[1]); $temp['hora'] = substr($o[3],0,5); //falta recortar os 5 primeiros caracteres do string if (($temp['unix'] >= $inicio) && ($temp['unix'] <= $fim)) array_push ($array_mare, $temp); } //agora distribui as varias mares num array de dias $array_dias = array(); foreach ($array_mare as $j => $mare) { if (!isset($array_dias[($mare['unix'])])) $array_dias[($mare['unix'])] = array(); array_push ($array_dias[($mare['unix'])], $mare); } //e finalmente distribui os dias num array de semanas $array_semanas = array(); foreach ($array_dias as $w => $dia) { if (!isset($array_semanas[(date('W',$w))])) $array_semanas[(date('W',$w))]=array(); array_push ($array_semanas[(date('W',$w))], $dia); //echo date('W', $w); //echo '
'; } return $array_semanas; }//fim da function arraydemare ?> '; echo ''; } ?>