php - skip duplicates and filter foreach -


i'm trying filter items in big .txt file show ones match current date. able show items matching current day, seems include items before , loops last entry endlessly.

this file i'm working in:

<?php include ($_server['document_root'].'/wp-load.php');     require_once('program.php'); date_default_timezone_set("europe/oslo");     $datetime_now = date('y-m-d h:i:s');     $idag = date('y-m-d');     $imorgen = date("y-m-d", strtotime("+1 day")); // $datetime_now = '2010-01-04 09:29:00';     $i = 0; // // echo "<pre>"; // print_r($program); // echo "</pre>";      $program = getradioprogram();      foreach ($program $program_na) {     if ($idag == substr($program_na['datotid'], 0, 10)) {               if ($i == 0) $j = 0;             else $j = $i-1;         // echo "i: ".$i." j: ".$j;              $program_dato = substr($program[$j]['datotid'], 0, 10);             $program_tid = substr($program[$j]['datotid'], -8, 5);             $program_tittel = str_replace('', '&ndash;', shorten($program[$j]['tittel'], 41));             $program_bilde = get_programimage(utf8_encode($program[$j]['tittel']));             $programleder = substr($program[$j]['tittel'], strpos($program[$j]['tittel'], " med ") + 0);             $programbaretittel = explode(" med ",$program[$j]['tittel']);             $programtittel = $programbaretittel['0'];             $programspons = $program[$j]['spons'];         } ?> <?php echo $program_dato.' - '.$program_tid; ?> <?php echo $programtittel; ?> <?php echo $programleder; ?> <?php         $i++;     }  ?> 

this program.php included

<?php   function getradioprogram() {     // open file, , read contents      // if (current_user_can('manage_options')) {          $attachment = get_attachment_url_by_slug('radioprogram_' . date("y") . '-' . date("m"));          if (strpos($attachment[0]->guid, '.txt') === false) {             $attachment = get_attachment_url_by_slug('radioprogram_' . date("y") . '-' . date("m") . '-2');         }          $filename = get_attached_file($attachment[0]->id);                    //          // if (current_user_can('manage_options')) {         //  var_dump($attachment);         // }          // var_dump($filename);     // } else {     //  $filename = get_root()."/uploads/radioprogram_" . date("y") . "-" . date("m") . ".txt";     // }      // var_dump($attachment);       $handle = @fopen($filename, "r");     $contents = @fread($handle, @filesize($filename));     $contents = utf8_encode($contents);     @fclose($handle);      // manipulate contents     $contents = explode("\n", $contents);      $ukedager = array("mandag", "tirsdag", "onsdag", "torsdag", "fredag", "lØrdag", "sØndag");     $maneder = array("januar", "februar", "mars", "april", "mai", "juni", "juli", "august", "september", "oktober", "november", "desember");      $i = 0;     $num_days = 0;     $program = array();      foreach ($contents $val) {         if (strlen($val) < 2) $val = rtrim($val);         else $val = ltrim($val);          if (empty($val)) continue; // skip empty lines         //if ((stripos($val, "nyheter ") !== false) or stripos($val, "pluss ") !== false) continue; // skip lines starting ...          $val_small = substr($val, 0, 9);          $is_day = false;          $j = 0;          foreach ($ukedager $ukedag) { // loop through week days             if (strpos($val_small, $ukedag) !== false) {                 $val = trim(strstr($val, " "))."\n";                  $val = str_replace("   ", " ", $val);                 $val = str_replace("  ", " ", $val);                              $date =  explode(" ", $val);                  $day = str_replace(".", "", $date[0]);                 $month = trim($date[1]);                 $year = trim($date[2]);                  if ($day < 10) {                     $day = "0".$day;                 }                  $k = 0;                  ($k=0;$k<=11;$k++) {                     if ($maneder[$k] == $month) {                         $month_number = $k+1;                          if ($month_number < 10) {                             $month_number = "0".$month_number;                         }                     }                 }                            $num_days++;                 $is_day = true;             }              $j++;         }          // finn klokkeslett og tittel         if (is_numeric($val{0})) {               $klokkeslett = substr($val, 0, 5);             $tittel = trim(substr($val, 6));                         $tittel = str_replace("å", "&aring;", $tittel);             $tittel = str_replace("ø", "&oslash;", $tittel);             $tittel = str_replace("–", "&dash;", $tittel);             $tittel = explode("- sponsor:", $tittel);              if (!strpos($klokkeslett, " ")) {                    $klokkeslett = explode(".", $klokkeslett);                  if ($klokkeslett[0] == "01") $day++; // hack, might not work                  $date_final = date("y-m-d h:i:s", mktime($klokkeslett[0], $klokkeslett[1], 0, $month_number, $day, $year));                           $program[$i]["datotid"] = $date_final;                 $program[$i]["tittel"] = $tittel[0];                 $program[$i]["spons"] = $tittel[1];              }         }          $i++;     }      sort($program);      return $program; } $program = getradioprogram(); ?> 

this part of text file:

tirsdag  28. juni  2016 <- date radio 102 har innholdskonsesjon og sendeanleggskonsesjon 24/7-radio konsesjonsområde 11-01 (haugesund m.fl.) på sendenett 11-01.0. stasjonen sender, henhold til konsesjonsvilkårene,  376 minutter lokalt innhold døgnet. konsesjonen er gitt med en varighet fra 1. januar 2010 til 31. desember 2016. radio 102 oppfyller medietilsynets minstekrav til kompetanse innen radiodrift, økonomiske driftsforutsetninger og lokalt innhold. <- unnecessary information  nyheter hver hele time fra 6.00 til 18.00 <-likewise  time    program title med(with) host (l= local programme) 06.00   din morgen med eivind og helge (l) 09.00   formiddag med hanne (l) 12.00   lunsj med egil (l) 15.00   ettermiddagsrush med monica (l) 18.00   max musikk med hanne (l)  20.00   max musikk med monica (l) 22.00   mot midnatt – de beste balladene på 102 (l)   24.00   neon, 102-musikk hele natta! (til 08.00)    tirsdag  31. mai 2016 radio 102 har innholdskonsesjon og sendeanleggskonsesjon 24/7-radio konsesjonsområde 11-01 (haugesund m.fl.) på sendenett 11-01.0. stasjonen sender, henhold til konsesjonsvilkårene,  376 minutter lokalt innhold døgnet. konsesjonen er gitt med en varighet fra 1. januar 2010 til 31. desember 2016. radio 102 oppfyller medietilsynets minstekrav til kompetanse innen radiodrift, økonomiske driftsforutsetninger og lokalt innhold.  nyheter hver hele time fra 6.00 til 18.00  06.00         din morgen med eivind thor magnar og helge (l) 09.00   formiddag med hanne  (l) 12.00   lunsj med egil (l) 15.00   ettermiddagsrush med monica (l)  18.00   max musikk med hanne (l) 20.00   max musikk med monica (l)  22.00   mot midnatt – de beste balladene på 102 (l) 24.00   neon, 102-musikk hele natta! (til 06.00)    onsdag  1. juni  2016 radio 102 har innholdskonsesjon og sendeanleggskonsesjon 24/7-radio konsesjonsområde 11-01 (haugesund m.fl.) på sendenett 11-01.0. stasjonen sender, henhold til konsesjonsvilkårene,  376 minutter lokalt innhold døgnet. konsesjonen er gitt med en varighet fra 1. januar 2010 til 31. desember 2016. radio 102 oppfyller medietilsynets minstekrav til kompetanse innen radiodrift, økonomiske driftsforutsetninger og lokalt innhold.  nyheter hver hele time fra 6.00 til 18.00  06.00   din morgen med eivind, thor magnar og helge (l) 09.00   formiddag med hanne (l) 12.00   lunsj med monica (l) 15.00   ettermiddagsrush med egil (l) 18.00   max musikk med hanne (l)  20.00   max musikk med monica (l) 22.00   mot midnatt – de beste balladene på 102 (l)     24.00   neon, 102-musikk hele natta! (til 06.00) 

this part of old script show item matching current time. plan make show items matching $idag , able filter show items matching $imorgen , on.

i have tried different variations of foreach skips, i'm confused in i'm supposed put before. cleanup of code probarbly thing.

see if looking do:

// create function array mapping // note regex abilities not great, can guarantee // else can portion not necessary function filterempty($v)     {         $v =   trim($v);             return $v;     }  function getdatesfromfile($filename)     {         // set file array         $getfile   =   file(__dir__.$filename,file_skip_empty_lines);         // pre-assign variables         $new       =            $arr       =   array();         $year      =            $mo            =            $day       =   false;         // set today         $today     =   date('y-n-j');         // set tomorrow         $tommorow  =   date("y-n-j", strtotime("+1 day"));         // set months in year         $calendar  =   array(                             "januar",                             "februar",                             "mars",                             "april",                             "mai",                             "juni",                             "juli",                             "august",                             "september",                             "oktober",                             "november",                             "desember"                         );         // loop through file array         foreach($getfile $key => $line) {             // trim line             $line  =   trim($line);             // if empty, skip             if(empty($line))                 continue;             // match trimmed line line: tirsdag  28. juni  2016              $regex      =   '/^([^\s|^\t]{1,})([\s|\t]{1,})([\d]{1,})\.([\s]{1,})([^\t]{1,})([\d]{4})/i';             $section    =   preg_match($regex,$line,$match);              if($section) {                 $mo     =   trim($match[5]);                 $mo     =   array_search($mo,$calendar)+1;                 $isdate =   $match[6].'-'.$mo.'-'.$match[3];             }              if(!isset($isdate))                 continue;             elseif(($isdate != $today) && ($isdate != $tommorow))                 continue;              if(!isset($new[$isdate]))                 $new[$isdate]   =   array();              // if array set, go through sub-set data             if(preg_match('/^([0-9\.]{4}).*/',$line)) {                 // again, better, i'm sure                 preg_match('/^([\d\.]{5})([^a-za-z]{1,})(.+)/i',$line,$details);                 $details   =   array_filter(array_map('filterempty',$details));                 unset($details[0]);                 $details   =   array_values($details);                  if(strpos($details[1],' med ') !== false)                     $hosted     =   explode(' med ',$details[1]);                 elseif(strpos($details[1],'-') !== false)                     $hosted     =   explode('-',$details[1]);                 elseif(strpos($details[1],'–') !== false)                     $hosted     =   explode('–',$details[1]);                  $hosted =   array_filter(array_map('filterempty',$hosted));                  $new[$isdate][substr($details[0],0,2)]    =   $hosted;             }         }          return $new;     }  $programs   =   getdatesfromfile('/test.txt');  foreach($programs $y => $yearrow) {     echo '<ul>'.php_eol;     foreach($yearrow $time => $pdata) {         echo '<li><div>'.number_format($time,2).'</div><div>'.implode('</div><div>',$pdata).'</div></li>'.php_eol;     }     echo '</ul>'.php_eol; } 

$programs gives array:

array (     [2016-6-3] => array         (             [06] => array                 (                     [0] => din morgen                     [1] => eivind og helge (l)                 )              [09] => array                 (                     [0] => formiddag                     [1] => hanne (l)                 )              [12] => array                 (                     [0] => lunsj                     [1] => egil (l)                 )              [15] => array                 (                     [0] => ettermiddagsrush                     [1] => monica (l)                 )              [18] => array                 (                     [0] => max musikk                     [1] => hanne (l)                 )              [20] => array                 (                     [0] => max musikk                     [1] => monica (l)                 )              [22] => array                 (                     [0] => mot midnatt                     [1] => de beste balladene på 102 (l)                 )              [24] => array                 (                     [0] => neon, 102                     [1] => musikk hele natta! (til 08.00)                 )          )      [2016-6-2] => array         (             [06] => array                 (                     [0] => din morgen                     [1] => eivind, thor magnar og helge (l)                 )              [09] => array                 (                     [0] => formiddag                     [1] => hanne (l)                 )              [12] => array                 (                     [0] => lunsj                     [1] => monica (l)                 )              [15] => array                 (                     [0] => ettermiddagsrush                     [1] => egil (l)                 )              [18] => array                 (                     [0] => max musikk                     [1] => hanne (l)                 )              [20] => array                 (                     [0] => max musikk                     [1] => monica (l)                 )              [22] => array                 (                     [0] => mot midnatt                     [1] => de beste balladene på 102 (l)                 )              [24] => array                 (                     [0] => neon, 102                     [1] => musikk hele natta! (til 06.00)                 )          )  ) 

gives html (you'd have formatting):

<ul> <li><div>6.00</div><div>din morgen</div><div>eivind og helge (l)</div></li> <li><div>9.00</div><div>formiddag</div><div>hanne (l)</div></li> <li><div>12.00</div><div>lunsj</div><div>egil (l)</div></li> <li><div>15.00</div><div>ettermiddagsrush</div><div>monica (l)</div></li> <li><div>18.00</div><div>max musikk</div><div>hanne (l)</div></li> <li><div>20.00</div><div>max musikk</div><div>monica (l)</div></li> <li><div>22.00</div><div>mot midnatt</div><div>de beste balladene på 102 (l)</div></li> <li><div>24.00</div><div>neon, 102</div><div>musikk hele natta! (til 08.00)</div></li> </ul> <ul> <li><div>6.00</div><div>din morgen</div><div>eivind, thor magnar og helge (l)</div></li> <li><div>9.00</div><div>formiddag</div><div>hanne (l)</div></li> <li><div>12.00</div><div>lunsj</div><div>monica (l)</div></li> <li><div>15.00</div><div>ettermiddagsrush</div><div>egil (l)</div></li> <li><div>18.00</div><div>max musikk</div><div>hanne (l)</div></li> <li><div>20.00</div><div>max musikk</div><div>monica (l)</div></li> <li><div>22.00</div><div>mot midnatt</div><div>de beste balladene på 102 (l)</div></li> <li><div>24.00</div><div>neon, 102</div><div>musikk hele natta! (til 06.00)</div></li> </ul> 

Popular posts from this blog

php - How should I create my API for mobile applications (Needs Authentication) -

5 Reasons to Blog Anonymously (and 5 Reasons Not To)

Google AdWords and AdSense - A Dynamic Small Business Marketing Duo