Go Down

Topic: PHP Frage zum Arduino Webserver / PHP / Text parsen (Read 2 times) previous topic - next topic

Marcus W

Dass explode() total übers Ziel hinausschießt. preg_match() ist exakt die Funktion, die exakt das tut, was er will. Alles andere ist mit der Hand durch den Rücken in den Hals. Totaler Pfusch. Was haben die Leute nur gegen Regular Expressions? Sicherlich sehen sie kompliziert aus - aber wenn man das Prinzip verstanden hat, sind sie extrem leistungsfähig.

ht81

Hi zusammen,

also ich habe mal grad den Code von Kudin eingebaut:

Code: [Select]
// read Temperature File
$TEMPhandle = fopen ("arduino/Arduino_Temp_2.txt", "r");
    $TEMPbuffer = fgets($TEMPhandle, 100);
fclose ($TEMPhandle);
if(preg_match('/Wohnzimmer: ([\-0-9.]+)(.*?)Aussen: ([\-0-9.]+)/i', $TEMPhandle, $result)
{
// suchmuster gefunden, daten in der datei gültig
$temp1 = intval($result[1]);  // temperaturwerte sind als string im $result-array gespeichert
$temp2 = intval($result[3]); // intval macht einen integer-wert (bzw float) aus ihnen

}
else
{
echo 'Suchmuster konnte nicht gefunden werden!';
}


leider geht dann gar nichts. Habe mit auskommentieren herausgefunden das es  an dem Befehl preg_match liegt oder zumindest was damit zu tun hat. Wahrscheinlich ist das Suchmuster falsch? Ich kann mir auch kein Error anzeigen lassen, dachte das funktioniert mit Error_all aber irgendwie nicht bei mir...

Andere Frage: muss in der if Zuweisung nicht TEMPbuffer statt TEMPhandle stehen?

df6ih

Du solltest die gesamte Arduino Webseite in eine Variable lesen und die dann in ihre Bestandteile zerlegen, 2 oder 3 bis 4 Zeilen. Dateien schreiben wird schnell nicht handlebar, wenn du da mehrere Betsandteile hast. Überdies ist das nicht zielführend, bremst nur.

kduin

Quote
muss in der if Zuweisung nicht TEMPbuffer statt TEMPhandle stehen?

doch, mein fehler...

Lass dir doch erstmal alle variablen ausgeben, dann können wir den fehler weiter einkreisen.

Code: [Select]
// read Temperature File
$TEMPhandle = fopen ("arduino/Arduino_Temp_2.txt", "r");
    $TEMPbuffer = fgets($TEMPhandle, 100);
echo 'TEMPbuffer: '.$TEMPbuffer.'<br />';
echo 'TEMPhandle: '.$TEMPhandle.'<br />';
fclose ($TEMPhandle);
if(preg_match('/Wohnzimmer: ([\-0-9.]+)(.*?)Aussen: ([\-0-9.]+)/i', $TEMPhandle, $result)
{
// suchmuster gefunden, daten in der datei gültig
$temp1 = intval($result[1]);  // temperaturwerte sind als string im $result-array gespeichert
$temp2 = intval($result[3]); // intval macht einen integer-wert (bzw float) aus ihnen

echo 'temp1: '.$temp1.'<br />';
echo 'temp2: '.$temp2.'<br />';

}
else
{
echo 'Suchmuster konnte nicht gefunden werden!';
}

Poste mal was dabei rauskommt.

ht81

Guten morgen,

habe gestern noch den Code versucht. Leider kommt nur "Interner Server Fehler 500" als ausgabe. Sonst nix mehr. Sowohl wenn ich den Code in die gepostete Index.php einbinde, sowie in eine "Nackte" Index.php welches nur den von Dir geposteten Code enthält. Beides mal erscheint der "Interner Server Fehler 500".

Bin grad etwas ratlos.....Kann man das den nicht irgendwie auf Error Reporting stellen? Irgendwie bin ich ja Blind und kann euch und mir ja auch keine weiteren Fehlerbeschreibung liefern.

@Voralpenkreuz: Nur zur Info, Du hast recht. Wenn ich den Code so umstelle wie Du es gepostet hast, funktioniert es. :)

Go Up