+ Antworten
Seite 1 von 9 1 2 3 ... LetzteLetzte
Ergebnis 1 bis 10 von 87
  1. #1
    Registriert seit
    Oct 2005
    Ort
    Gehrden / Hannover
    Beiträge
    501

    Standard [CLASS] Abfahrtstafeln von bahn.de auslesen

    Der Onkel hat mal wieder was zusammengeschraubt

    Ziel war das auslesen und aufbereiten der Abfahrtstafel der DB anhand von Bahnhof, Datum, Zeit.
    Das ganze klappt auch für den ÖPNV. Also Busse, Straßenbahnen etc.

    Ganz unten gibts dann mal eine Beispielanzeige


    Hier gleich mal ein Beispiel wie man die PHP-Klasse benutzt:
    PHP-Code:
    require_once("class.bahn.php"); // Klasse einbinden

    // Neue Instanz
    //Parameter 1 ist der Bahnhof oder die Haltestelle
    //(es muss kein Bahnhof sein, Bushaltestelle gehen auch)
    // Parameter 2 ist die Art der Tafel: "Abfahrt" oder "Ankunft"
    $bahn=new bahn("Hannover Hbf","abfahrt");


    // Hier werden Verkehrsmittel ausgeschlossen
    /*
    $bahn->TypeBUS(false);
    $bahn->TypeTRAM(false);
    $bahn->TypeICE(false);
    $bahn->TypeIC(false);
    $bahn->TypeRE(false);
    $bahn->TypeSBAHN(false);
    $bahn->TypeUBAHN(false);
    $bahn->TypeFAEHRE(false);
    */

    // Hier werden Datum und Zeit gesetzt.
    // Werden die nicht gesetzt wird die/das aktuelle Zeit/Datum genommen
    /*
    $bahn->datum("17.5.2010");
    $bahn->zeit("1:00");
    */

    // Jetzt das Ergebniss holen!
    $abfragestatus=$bahn->fetch();
    if(
    $abfragestatus){
            
    // Array mit den Informationen ausgeben:
        
    print_r($bahn->timetable);

    Das oben genannte Beispiel setzt die CURL-Lib vorraus! Wenn man die nicht installiert hat (oder nicht will) gibt es einen zweiten Weg:
    PHP-Code:
    require_once("class.bahn.php"); // Klasse einbinden

    $bahn=new bahn("München Hbf","abfahrt");

    // Hier wird gesagt das KEIN Curl genutzt wird!
    $bahn->fetchMethodCURL(false); 

    // Jetzt wirds interessant:
    // Nachdem alle Parameter wie gewünscht getzt sind
    // holt man sich die Anfrageurl für bahn.de:
    $url $bahn->buildQueryURL();
    // Diese Url kann man nun in den WWW_Reader füttern
    // und die Daten per RegVar verarbeiten. 
    Dazu das mögliche Script für die Regvar:
    PHP-Code:


    $HTML
    ="<kommt aus eurem WWW-Reader>";


    require_once(
    "class.bahn.php"); // Klasse einbinden

    $bahn=new bahn();

    // Hier werden die HTML-Daten nun direkt in den Parser geschoben:

    $abfragestatus=$bahn->fetch($HTML); 

    if(
    $abfragestatus){
            
    // Array mit den Informationen ausgeben:
        
    print_r($bahn->timetable);

    Wenn alles hingehauen hat dann bekommt ihr das
    Array mit den Daten:
    Code:
    Array
    (
        [0] => Array
            (
                [time] => 17:31
                [train] => IC2803
                [type] => EC
                [route_ziel] => Berlin Ostbahnhof
                [route] => Array
                    (
                        [17:31] => Hannover Hbf
                        [18:54] => Berlin-Spandau
                        [19:08] => Berlin Hbf
                        [19:19] => Berlin Ostbahnhof
                    )
    
                [platform] => 9
                [ris] => Ersatzzug für*IC  2861,ca.*60*Minuten*später,Grund: Folge aus Triebfahrzeugstörung an einem anderen Personenzug
                [route_start] => Hannover Hbf
            )
    [1] => Array
            (...)
    
    usw usw..

    Hier die PHP Klasse:
    Hinweis: Neues Script anlegen und den Dateinamen auf "class.bahn.php" setzten.

    PHP-Code:
    <?
    /*
    Author: Frederik Granna (sysrun)
    Version 0.1
    */


    class bahn{
        var 
    $_BASEURL="http://reiseauskunft.bahn.de/bin/bhftafel.exe/dn?";
        var 
    $_PARAMS=array();
        var 
    $timetable=array();
        var 
    $bahnhof=false;
        var 
    $_FETCHMETHOD;
        function 
    bahn($bahnhof=null,$type="abfahrt"){
           
    $type=strtolower($type);
        
        
           if(!
    $bahnhof)
              
    $bahnhof="Hannover HBF";
            
    $this->_init($bahnhof);
            
    $this->fetchMethodCURL(true);
            
    $this->boardType($type);
            
            
    //$this->_query();
        
    }

        function 
    TypeBUS($state=true){$this->_PARAMS['GUIREQProduct_5'] = ($state) ? "on" false;}
        function 
    TypeICE($state=true){$this->_PARAMS['GUIREQProduct_0'] = ($state) ? "on" false;}
        function 
    TypeIC($state=true){$this->_PARAMS['GUIREQProduct_1'] = ($state) ? "on" false;}
        function 
    TypeRE ($state=true){$this->_PARAMS['GUIREQProduct_3'] = ($state) ? "on" false;} // NV genannt
        
    function TypeSBAHN ($state=true){$this->_PARAMS['GUIREQProduct_4'] = ($state) ? "on" false;} 
        function 
    TypeFAEHRE ($state=true){$this->_PARAMS['GUIREQProduct_6'] = ($state) ? "on" false;}   // UBAHN
        
    function TypeTRAM ($state=true){$this->_PARAMS['GUIREQProduct_8'] = ($state) ? "on" false;}   // STrassenbahn
        
    function TypeUBAHN ($state=true){$this->_PARAMS['GUIREQProduct_7'] = ($state) ? "on" false;}   // UBAHN



        
    function boardType($type){
            if(
    $type=="ankunft")
                
    $this->_PARAMS['boardType']="arr";
            else
                
    $this->_PARAMS['boardType']="dep";

        }

        function 
    datum($datum){
            
    $this->_PARAMS['date']=$datum;
        }
        
        function 
    zeit($zeit){
            
    $this->_PARAMS['time']=$zeit;

        }

        
    /**
         *
         **/
        
    function fetch($html=null){
           if(
    $html){
              return 
    $this->_parse($html);
           }else if(
    $this->_FETCHMETHOD=="CURL"){
                return 
    $this->_queryCurl();
            }
        }


        function 
    _queryCurl(){
            
    $this->buildQueryURL();
            
    $result=$this->_call();
            return 
    $this->_parse($result);
        }

        function 
    buildQueryURL(){
           
    $fields_string="";
            foreach(
    $this->_PARAMS as $key=>$value){
               if(
    $value)
                    
    $fields_string .= $key.'='.urlencode($value).'&';
            };
            
    rtrim($fields_string,'&');

            
    $this->_URL=$this->_BASEURL.$fields_string;
            return 
    $this->_URL;
        }

        function 
    _parse($data){
            
    $dom = new DOMDocument();
            @
    $dom->loadHTML($data);
            
            
    $select=$dom->getElementById("rplc0");
            if(
    $select->tagName=="select"){
                
    $options=$select->getElementsByTagName("option");
                foreach(
    $options AS $op){
                    echo 
    utf8_decode($op->getAttribute("value")."-".$op->nodeValue)."n";
                }
                return 
    false;
            }else{
               
    $this->bahnhof=utf8_decode($select->getAttribute("value"));
                
    $this->_process_dom($dom);
                return 
    true;
            }
        }

        function 
    _process_dom($dom){
                
    $test=$dom->getElementById("sqResult")->getElementsByTagName("tr");
                
    $data=array();
                foreach(
    $test as $k=>$t){
                    
    $tds=$t->getElementsByTagName("td");
                    foreach(
    $tds AS $td){
                       
    $dtype=$td->getAttribute("class");
                        switch(
    $dtype){
                            case 
    'train':
                                if(
    $a=$td->getElementsByTagName("a")->item(0)){
                                    
    $data[$k]['train']=str_replace(" ","",$a->nodeValue);
                                    if(
    $img=$a->getElementsByTagName("img")->item(0)){
                                        if (
    preg_match('%/([a-z]*)_%'$img->getAttribute("src"), $regs)) {
                                           switch(
    $regs[1]){
                                              case 
    'EC':
                                                 
    $data[$k]['type']="IC";
                                              break;
                                                default:
                                                    
    $data[$k]['type']=strtoupper($regs[1]);
                                                break;
                                            }
                                        }
                                    }
                                }
                                
                            break;
                            case 
    'route':
                               if(
    $span=@$td->getElementsByTagName("span")->item(0)){
                                  
    $data[$k]['route_ziel']=$span->nodeValue;
                                }

                                
    preg_match_all('/(.*)s*([0-9:]{5})/'$td->nodeValue$resultPREG_PATTERN_ORDER);
                                
    $tmp=array();
                                foreach(
    $result[1] AS $rk=>$rv){
                                    
    $tmp[$result[2][$rk]]=utf8_decode(trim(html_entity_decode(str_replace("n","",$rv))));
                                }
                                
    $data[$k]['route']=$tmp;
                                
    //print_r($tmp);
                                /*

                                $data[$k]['route']=explode("-",$td->nodeValue);
                                foreach($data[$k]['route'] AS $dk=>$dv)
                                   $data[$k]['route'][$dk]=utf8_decode(trim(html_entity_decode(str_replace("n","",$dv))));
                                */
                            
    break;
                            case 
    'time':
                            case 
    'platform':
                            case 
    'ris':
                               
    $data[$k][$dtype]=$td->nodeValue;
                            break;


                        }
                        
    //echo "n";
                    
    }
                }

                foreach(
    $data AS $d){
                    if(
    array_key_exists("train",$d)){
                       foreach(
    $d AS $dk=>$dv)
                          if(!
    is_array($dv))
                              
    $d[$dk]=ltrim(str_replace("n","",utf8_decode(trim(html_entity_decode($dv)))),"-");
                        
    $d['route_start']=$this->bahnhof;
                        
    $this->timetable[]=$d;
                 }
                }
        }

        function 
    fetchMethodCURL($state){
            if(
    $state){
                
    $this->_FETCHMETHOD="CURL";
            }else{
                
    $this->_FETCHMETHOD="OTHER";
            }
        }


        function 
    _call(){
            
    $this->_CH curl_init();
            
    curl_setopt($this->_CH,CURLOPT_RETURNTRANSFER,true);
            
    curl_setopt($this->_CH,CURLOPT_URL,$this->_URL);
            
    $result curl_exec($this->_CH);
            
    curl_close($this->_CH);
            return 
    $result;
        }

        function 
    _init($bahnhof){
            
    $this->_PARAMS=array(
                
    'country'=>'DEU',
                
    'rt'=>1,
                
    'GUIREQProduct_0'=>'on',    // ICE
                
    'GUIREQProduct_1'=>'on',   // Intercity- und Eurocityzüge
                
    'GUIREQProduct_2'=>'on',   // Interregio- und Schnellzüge
                
    'GUIREQProduct_3'=>'on',   // Nahverkehr, sonstige Züge
                
    'GUIREQProduct_4'=>'on',    // S-Bahn
                
    'GUIREQProduct_5'=>'on',    // BUS
                
    'GUIREQProduct_6'=>'on',    // Schiffe
                
    'GUIREQProduct_7'=>'on'// U-Bahn
                
    'GUIREQProduct_8'=>'on'// Strassenbahn
                
    'REQ0JourneyStopsSID'=>'',
                
    'REQTrain_name'=>'',
                
    'REQTrain_name_filterSelf'=>'1',
                
    'advancedProductMode'=>'',
                
    'boardType'=>'dep'// dep oder arr
                
    'date'=>date("d.m.Y"),
                
    'input'=>$bahnhof,
                
    'start'=>'Suchen',
                
    'time'=>date("H:i")
            );


        }

    }

    ?>
    Angehängte Grafiken Angehängte Grafiken  

  2. #2
    Registriert seit
    Apr 2010
    Beiträge
    421

    Hi, cooles script. Nur fehlte mir noch die Visualisierung im Webfront. Dazu hab ich mal schnell was zusammen kopiert. Folgt alles im Anhang.

    Allerdings hab ich Probleme bei der Darstellung des Buchstaben "n". Er wird verschluckt. Hast Du da Abhilfe?

    Nun eine Webfront Anzeige, welche ein wenig angepasst werden muss. Die Icons gehören in den Ordner webfront/user:
    PHP-Code:
    <?
    require_once("class.bahn.php"); // Klasse einbinden

        //Ab hier nichts mehr ändern
        
    $object IPS_GetObject($IPS_SELF);
        
    $parentID $object['ParentID'];


    // Neue Instanz
    //Parameter 1 ist der Bahnhof oder die Haltestelle
    //(es muss kein Bahnhof sein, Bushaltestelle gehen auch)
    // Parameter 2 ist die Art der Tafel: "Abfahrt" oder "Ankunft"
    $bahn=new bahn("Lehrte","abfahrt");


    // Hier werden Verkehrsmittel ausgeschlossen
    /*
    $bahn->TypeBUS(false);
    $bahn->TypeTRAM(false);
    $bahn->TypeICE(false);
    $bahn->TypeIC(false);
    $bahn->TypeRE(false);
    $bahn->TypeSBAHN(false);
    $bahn->TypeUBAHN(false);
    $bahn->TypeFAEHRE(false);
    */

    // Hier werden Datum und Zeit gesetzt.
    // Werden die nicht gesetzt wird die/das aktuelle Zeit/Datum genommen
    /*
    $bahn->datum("17.5.2010");
    $bahn->zeit("1:00");
    */

    // Jetzt das Ergebniss holen!
    $abfragestatus=$bahn->fetch();
    if(
    $abfragestatus){
            
    // Array mit den Informationen ausgeben:
        
    print_r($bahn->timetable);
        
    AnzeigeAufbereiten($bahn,"Abfahrt Lehrte",$parentID);
    }

    // zweite Anzeigentafel
    $bahn=new bahn("Lehrte","ankunft");
    $abfragestatus=$bahn->fetch();
    if(
    $abfragestatus){
            
    // Array mit den Informationen ausgeben:
        
    print_r($bahn->timetable);
        
    AnzeigeAufbereiten($bahn,"Ankunft Lehrte",$parentID);
    }

    // anzeige aufbereiten in eine html box
    function AnzeigeAufbereiten($bahn$name,$parentID)
    {
        
    $VARIABLEN_TEXT=$name;

        
    // Anzeige aufbereiten
        
    $str "<table width='90%' align='center'>"// Farbe anpassen oder style entfernen
        
    $str .= "<tr><td></td><td><b>Zug</b></td><td><b>Zeit</b></td><td><b>Richtung</b></td><td><b>Gleis</b></td><td><b>Aktuelles</b></td></tr>";

        
    $pos 0;
        for(
    $i=3$i<=sizeof($bahn->timetable); $i++)
        {
            
    //$eintrag = explode(";", $bahn->timetable[$i]);
            
    $caller $bahn->timetable[$i]["type"];
            switch(
    $caller) {
               case 
    "SBAHN":
                  
    $eintrag[0] = "<img src=/user/bahn/sbahn_24x24.gif>";
                  break;
               case 
    "BUS":
                  
    $eintrag[0] = "<img src=/user/bahn/bus_24x24.gif>";
                  break;
               case 
    "RE":
                  
    $eintrag[0] = "<img src=/user/bahn/re_24x24.gif>";
                  break;
               case 
    "ICE":
                  
    $eintrag[0] = "<img src=/user/bahn/ice_24x24.gif>";
                  break;
               case 
    "TRAM":
                  
    $eintrag[0] = "<img src=/user/bahn/tram_24x24.gif>";
                  break;
                default:
                   
    $eintrag[0] = "";
                   break;
            }
            
    $eintrag[1] = $bahn->timetable[$i]["train"];
            
    $eintrag[2] = $bahn->timetable[$i]["time"];
            
    $eintrag[3] = $bahn->timetable[$i]["route_ziel"];
            
    $eintrag[4] = $bahn->timetable[$i]["platform"];
            
    $eintrag[5] = $bahn->timetable[$i]["ris"];

                
    $str .= "<tr>";
                foreach(
    $eintrag as $data)
                    
    $str .= '<td>'.$data.'</td>';
                
    $str .= "</tr>";

                
    $pos++;

            if(
    $pos >= 4)
                break;
        }
        
    $str .= "</table>";

        
    $vid CreateVariableByName($parentID$VARIABLEN_TEXT3);
        
    IPS_SetIcon($vid"Distance");
        
    IPS_SetVariableCustomProfile($vid"~HTMLBox");
        
    SetValue($vid$str);
    }

    function 
    CreateVariableByName($id$name$type)
    {
        global 
    $IPS_SELF;
        
    $vid = @IPS_GetVariableIDByName($name$id);
        if(
    $vid === false)
        {
            
    $vid IPS_CreateVariable($type);
            
    IPS_SetParent($vid$id);
            
    IPS_SetName($vid$name);
            
    IPS_SetInfo($vid"this variable was created by script #$IPS_SELF");
        }
        return 
    $vid;
    }

    ?>
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	Bildschirmfoto 2010-08-21 um 22.13.04.png 
Hits:	1381 
Größe:	64.7 KB 
ID:	8967  
    Angehängte Dateien Angehängte Dateien
    Geändert von mäc (21.08.10 um 21:53 Uhr)
    Eltako 12er und 14er Bus, IPS auf Pi

  3. #3
    Registriert seit
    Apr 2010
    Beiträge
    421

    Die gelöschten "n" Buchstaben konnte ich lösen.

    Die Zeile mit:
    PHP-Code:
    $d[$dk]=ltrim(str_replace("n","",utf8_decode(trim(html_entity_decode($dv)))),"-"); 
    Dort habe ich das str_replace entfernt. Wofür war das denn?
    Eltako 12er und 14er Bus, IPS auf Pi

  4. #4
    Registriert seit
    Oct 2005
    Ort
    Gehrden / Hannover
    Beiträge
    501

    Zitat Zitat von mäc Beitrag anzeigen
    Die gelöschten "n" Buchstaben konnte ich lösen.

    Die Zeile mit:
    PHP-Code:
    $d[$dk]=ltrim(str_replace("n","",utf8_decode(trim(html_entity_decode($dv)))),"-"); 
    Dort habe ich das str_replace entfernt. Wofür war das denn?


    Ah!

    Das war nicht "n" sondern "\n" (Zeilenumbruch)! Der wird dadurch gelöscht damit einige längere Haltestellennamen nicht umgebrochen werden!
    FHZ1300 | 2x JeeLink | AVR-NETIO | FS20 | 1-Wire | 2x XBEE Pro | 4x XBEE 2.5 (als Zigbee Mesh) | eDip | 7x Jeenode | JeeNode EtherCard | CUL Stick
    3x Fritz!Box, WHS, XBMC, IPS-Server (Atom)

  5. #5
    Registriert seit
    May 2010
    Ort
    Munich
    Beiträge
    85

    Hi, jetzt gefällts mir immer besser
    Ich hab nur ein Problem mit meinem Bahnhof ;-)
    Iirgendwas stört Ihn an Pfaffenhofen Ilm
    Im Script steht "PAF" das wird auch von der Bahnseite richtig interpretiert.

    Als Ergebnis bekomm ich allerdings
    Undefined offset: 3

    Hat jemand eine Erklärung?

    Array
    (
    [0] => Array
    (
    [time] => 13:29
    [train] => RE4012
    [type] => RE
    [route_ziel] => Nürnberg Hbf
    [route] => Array
    (
    [13:29] =>
    [13:35] =>
    [13:48] =>
    [14:08] =>
    [14:20] =>
    [14:34] =>
    [14:48] =>
    )

    [platform] => 3
    [ris] => pünktlich
    [route_start] => Pfaffenhofen(Ilm)
    )

    [1] => Array
    (
    [time] => 13:56
    [train] => RE35931
    [type] => RE
    [route_ziel] => München Hbf
    [route] => Array
    (
    [13:56] =>
    [14:00] =>
    [14:04] =>
    [14:09] =>
    [14:21] =>
    [14:35] =>
    )

    [platform] => 1
    [ris] => pünktlich
    [route_start] => Pfaffenhofen(Ilm)
    )

    [2] => Array
    (
    [time] => 14:05
    [train] => RE35934
    [type] => RE
    [route_ziel] => Nürnberg Hbf
    [route] => Array
    (
    [14:05] =>
    [14:12] =>
    [14:20] =>
    [14:27] =>
    [15:20] =>
    [15:56] =>
    [16:04] =>
    [16:17] =>
    )

    [platform] => 3
    [ris] => pünktlich
    [route_start] => Pfaffenhofen(Ilm)
    )

    )

    Notice: Undefined offset: 3 in C:\IP-Symcon\scripts\28273.ips.php on line 65

    Notice: Undefined offset: 3 in C:\IP-Symcon\scripts\28273.ips.php on line 86

    Notice: Undefined offset: 3 in C:\IP-Symcon\scripts\28273.ips.php on line 87

    Notice: Undefined offset: 3 in C:\IP-Symcon\scripts\28273.ips.php on line 88

    Notice: Undefined offset: 3 in C:\IP-Symcon\scripts\28273.ips.php on line 89

    Notice: Undefined offset: 3 in C:\IP-Symcon\scripts\28273.ips.php on line 90
    Array
    (
    [0] => Array
    (
    [time] => 13:28
    [train] => RE4012
    [type] => RE
    [route_ziel] => München Hbf
    [route] => Array
    (
    [13:04] =>
    [13:20] =>
    [13:28] =>
    )

    [platform] => 3
    [ris] => pünktlich
    [route_start] => Pfaffenhofen(Ilm)
    )

    [1] => Array
    (
    [time] => 13:55
    [train] => RE35931
    [type] => RE
    [route_ziel] => Nürnberg Hbf
    [route] => Array
    (
    [11:38] =>
    [11:48] =>
    [11:56] =>
    [12:40] =>
    [13:34] =>
    [13:40] =>
    [13:48] =>
    [13:55] =>
    )

    [platform] => 1
    [ris] => pünktlich
    [route_start] => Pfaffenhofen(Ilm)
    )

    [2] => Array
    (
    [time] => 14:04
    [train] => RE35934
    [type] => RE
    [route_ziel] => München Hbf
    [route] => Array
    (
    [13:29] =>
    [13:41] =>
    [13:52] =>
    [13:56] =>
    [14:00] =>
    [14:04] =>
    )

    [platform] => 3
    [ris] => pünktlich
    [route_start] => Pfaffenhofen(Ilm)
    )

    )

    Notice: Undefined offset: 3 in C:\IP-Symcon\scripts\28273.ips.php on line 65

    Notice: Undefined offset: 3 in C:\IP-Symcon\scripts\28273.ips.php on line 86

    Notice: Undefined offset: 3 in C:\IP-Symcon\scripts\28273.ips.php on line 87

    Notice: Undefined offset: 3 in C:\IP-Symcon\scripts\28273.ips.php on line 88

    Notice: Undefined offset: 3 in C:\IP-Symcon\scripts\28273.ips.php on line 89

    Notice: Undefined offset: 3 in C:\IP-Symcon\scripts\28273.ips.php on line 90

  6. #6
    Registriert seit
    Oct 2005
    Ort
    Gehrden / Hannover
    Beiträge
    501

    Hmmm, das ist komisch.

    Bei mir kommt alles richtig raus:
    Code:
    Array
    (
        [0] => Array
            (
                [time] => 16:04
                [train] => RE35938
                [type] => RE
                [route_ziel] => München Hbf
                [route] => Array
                    (
                        [15:28] => München Hbf
                        [15:40] => Dachau Bahnhof
                        [15:52] => Petershausen(Obb)
                        [15:56] => Paindorf
                        [16:00] => Reichertshausen(Ilm)
                        [16:04] => Pfaffenhofen(Ilm)
                    )
    
                [platform] => 3
                [ris] => pünktlich
                [route_start] => Pfaffenhofen(Ilm)
            )
    
        [1] => Array
            (
    FHZ1300 | 2x JeeLink | AVR-NETIO | FS20 | 1-Wire | 2x XBEE Pro | 4x XBEE 2.5 (als Zigbee Mesh) | eDip | 7x Jeenode | JeeNode EtherCard | CUL Stick
    3x Fritz!Box, WHS, XBMC, IPS-Server (Atom)

  7. #7
    Registriert seit
    May 2010
    Ort
    Munich
    Beiträge
    85

    Hi sysrun,
    Ich habs grad nochmal nachgestellt, dein Array klappt auch!
    Nur schwierigkeiten gibts bei mäc's variante!
    Ich glaub die Klammern bei Pfaffenhofen(Ilm) sind schuld!
    Mit anderen Orten hab ich auch kein Problem. hannover sieht fein aus ;-)
    Stefan

  8. #8
    Registriert seit
    Apr 2010
    Beiträge
    421

    Hi,
    hab es auch gerade probiert, also die bahn class liefert ein ergebnis. da meine visualisierung vom code noch ein wenig weiter bin, versuche ich mal deinen bahnhof darzustellen. liegt sicher an der anzeige.
    Eltako 12er und 14er Bus, IPS auf Pi

  9. #9
    Registriert seit
    May 2010
    Ort
    Munich
    Beiträge
    85

    Hi mäc,
    Ich konnte es ein wenig eingenzen.
    Dein script kommt scheinbar nicht mit der Rückgabe von Klammern aus der class.bahn.php zur4cht.

    Ich habe folgendes in der class.bahn.php gemacht, jetz klappts schon mal!

    PHP-Code:
       $data[$k]['route']=explode("-",$td->nodeValue);
                                foreach(
    $data[$k]['route'] AS $dk=>$dv)
                                   
    $data[$k]['route'][$dk]=utf8_decode(trim(html_entity_decode(str_replace("("," ",str_replace(")"," ",str_replace("\n","",$dv)))))); 
    sowie
    PHP-Code:
     foreach($data AS $d){
                    if(
    array_key_exists("train",$d)){
                       foreach(
    $d AS $dk=>$dv)
                          if(!
    is_array($dv))
                              
    $d[$dk]=ltrim(str_replace("\n","",utf8_decode(trim(html_entity_decode($dv)))),"-");
                              
    #$d['route_start']=$this->bahnhof;
                              
    $d['route_start']="Pfaffenhofen"
    --> Das muss natürlich noch generisch werden ;-)

  10. #10
    Registriert seit
    Apr 2010
    Beiträge
    421

    also ich tippe auf nen falschen array zugriff. In der Zeile mit
    PHP-Code:
        for($i=3$i<=sizeof($bahn->timetable); $i++) 
    Sollte aus <= das = raus dann läuft es bei mir durch.

    PHP-Code:
        for($i=3$i<sizeof($bahn->timetable); $i++) 
    Ohne mir die Syntax vom PHP angeschaut zu haben wird es sicher so ein das arrays von 0 ab gezählt genutzt werden. allerdings die size eine 1 liefert.
    Eltako 12er und 14er Bus, IPS auf Pi

Ähnliche Themen

  1. Ich kann keine Werte von meiner UVR1611 auslesen
    Von Heiko12 im Forum Haustechnik
    Antworten: 4
    Letzter Beitrag: 01.04.10, 13:30
  2. Fernwärme Daten auslesen mit EKM 868?
    Von p-968 im Forum Haustechnik
    Antworten: 3
    Letzter Beitrag: 12.01.10, 18:07
  3. Temperaturwerte schnell auslesen!!!
    Von crezs im Forum Allgemeine Diskussion
    Antworten: 3
    Letzter Beitrag: 13.11.06, 08:46
  4. [neuling] wie elv fht auslesen und steuern
    Von pleibling im Forum Allgemeine Diskussion
    Antworten: 7
    Letzter Beitrag: 21.12.05, 11:31