<?
// TODO: es sind mal img mit Werbung mit gekommen. TODO: Diese rausfiltern
// liste der variablen und deren url abfragen
//
$variable_list = array(
20686 => "http://iphone.verkehrsinfo.de/showmessages.php?c=1&street=A2",
15311 => "http://iphone.verkehrsinfo.de/showmessages.php?c=1&street=B65",
29003 => "http://iphone.verkehrsinfo.de/showmessages.php?c=1&bl=258"
);
// Datenausgabe
while ($varURL = current($variable_list))
{
$str = getTrafficMessage($varURL);
SetValue(key($variable_list), utf8_decode($str));
next($variable_list);
}
// abfrage zeit setzen
SetValue(24127 /*[Reise\Staumeldungen\Verkehrsmeldungen\Abfrage von]*/, date("H:i",time()));
// aus den links von http://iphone.verkehrsinfo.de
//
// spezielle strasse aktuell genutzt
// http://iphone.verkehrsinfo.de/showmessages.php?c=1&street=A2
//
// niedersachsen für später
// http://iphone.verkehrsinfo.de/showmessages.php?c=1&bl=258
//
// Parameter: URL - vollständige URL welche die Daten zurückgibt
//
function getTrafficMessage($value)
{
$meldung = file_get_contents($value);
$laenge = strpos($meldung,"www.verkehrsinfo.de<br>") - 40 - strpos($meldung,"</head>") +7 ;
echo substr($meldung,strpos($meldung,"</head>")+7,$laenge);
// head block und (C) entfernen
$message=substr($meldung,strpos($meldung,"</head>")+7,$laenge);
$str = "<table width='90%' align='center'>"; // Farbe anpassen oder style entfernen
// prüfen ob <li> vorkommen, dann liegen auch meldungen vor
if (strpos($meldung,"<li>")>0)
{
// es liegen welche vor also meldugn anhängen
$str=$str.$message;
}
else
{
// keine Meldung dann statischer text analog den aus dem netz
$str=$str."<ul><li>Es liegen keine Meldungen vor.</li></ul>";
}
$str=$str."</table>";
//echo $str;
return $str;
}
?>
Hallo,
erst mal vielen Dank für das Skript. Supersache!
Da ich auf meinem Weg zur Arbeit 4 Autobahnen nutze war für mich die Ausgabe getrennt nach Autobahnen etwas voluminös.
Ich habe das Skript deshalb für mich so angepasst, dass alle Meldungen in der Reihenfolge wie ich die Autobahnen befahre in eine einzige HTML-Variable ausgegeben werden.
Den statischen Text der kommt falls keine Meldungen vorhanden sind hab ich auch entfernt um Platz zu sparen.
Ich bin mir bewusst, dass es sich bei den Anpassungen nicht um ein geniales Meisterwerk handelt, aber vielleicht nutzt es ja jemanden was der einen ähnlichen Anwendungsfall hat und sich nicht viel mit PHP befasst.
<?
// TODO: es sind mal img mit Werbung mit gekommen. TODO: Diese rausfiltern
// liste der variablen und deren url abfragen
//
$variable_list = array(
1 => "http://iphone.verkehrsinfo.de/showmessages.php?c=1&street=A60",
2 => "http://iphone.verkehrsinfo.de/showmessages.php?c=1&street=A643",
3 => "http://iphone.verkehrsinfo.de/showmessages.php?c=1&street=A66",
4 => "http://iphone.verkehrsinfo.de/showmessages.php?c=1&street=A648"
);
$str = "<table width='90%' align='left'><tr><td>"; // Farbe anpassen oder style entfernen
$str = $str."Verkehrsmeldungen von ".date("H:i",time())."</td></tr>";
$str = $str."<tr><td>";
// Datenausgabe
while ($varURL = current($variable_list))
{
$str = $str.getTrafficMessage($varURL);
next($variable_list);
}
$str = $str."</td></tr>";
$str=$str."</table>";
SetValue(23901, utf8_decode($str));
// aus den links von http://iphone.verkehrsinfo.de
//
// spezielle strasse aktuell genutzt
// http://iphone.verkehrsinfo.de/showmessages.php?c=1&street=A2
//
// niedersachsen für später
// http://iphone.verkehrsinfo.de/showmessages.php?c=1&bl=258
//
// Parameter: URL - vollständige URL welche die Daten zurückgibt
//
function getTrafficMessage($value)
{
$meldung = file_get_contents($value);
$laenge = strpos($meldung,"www.verkehrsinfo.de<br>") - 40 - strpos($meldung,"</head>") +7 ;
echo substr($meldung,strpos($meldung,"</head>")+7,$laenge);
// head block und (C) entfernen
$message=substr($meldung,strpos($meldung,"</head>")+7,$laenge);
$partstr="";
// prüfen ob <li> vorkommen, dann liegen auch meldungen vor
if (strpos($meldung,"<li>")>0)
{
// es liegen welche vor also meldungen anhängen
$partstr=$message;
}
else
{
// keine Meldung, um Platz zu sparen wird im Gegensatz zum Originalscript kein statischer Text ausgegeben
}
//echo $str;
return $partstr;
}
?>
Kurz zur Erläuterung:
Da die Meldungen zu den Autobahnen nicht mehr in unterschiedliche Variablen ausgegeben werden, wird der Schlüssel im Array nicht mehr für die Variablen-ID genutzt. Hier sind einfach nur noch fortlaufenden Zahlen.
Die Object-ID der Ausgabevariable taucht nur einmalig bei SetValue(23901, utf8_decode($str)); auf.
Im Moment kann ich es nicht testen. Aber wie gesagt, es wurde noch mehr geändert. Das „Zuschneiden“ der Meldungen für die Webfrontausgabe klappt deshalb auch nicht mehr. Auch die Prüfung, ob überhaupt Meldungen vorliegen, geht deshalb jetzt ins Leere (kein <li> mehr). Außerdem fehlen die Symbole.
Ich habe zwar gestern Abend das Skript wieder grob zum Laufen gebracht, aber neben den fehlenden Symbolen gibt es noch ein Problem mit den Sonderzeichen. Wahrscheinlich wird es mit ein paar Anpassungen nicht getan sein. Schade.