3v4l.org

run code in 300+ PHP versions simultaneously
<?php // Input, später zu ersetzen durch $get $Input_ICAO_Airport = "KHII"; getMetar($Input_ICAO_Airport); function getMetar($ICAO_Code) { // Filter um sicherzustellen, dass ein valider code eingegeben wurde $opt = array( "options" => array( "regexp" => "/^[a-zA-Z]{4}$/" ) ); if (filter_var($ICAO_Code, FILTER_VALIDATE_REGEXP, $opt)) { $ICAO_Code = strtoupper($ICAO_Code); $filename = "ftp://tgftp.nws.noaa.gov/data/observations/metar/stations/{$ICAO_Code}.TXT"; $handle = fopen($filename, "r"); $contents = fread($handle, filesize($filename)); fclose($handle); echo $contents; if (strlen($contents) < 5) { myerror("Erhaltenes Metar nicht valide!"); } else { $resRaw = preg_split("/\s+/", $contents); array_pop($resRaw); $translation = array(); $translation["airport"] = $resRaw[2]; //ICAO CODE der Station $translation["month"] = substr($resRaw[0], 5, 2); //Monat $translation["day"] = substr($resRaw[0], 8, 2); // Tag $translation["year"] = substr($resRaw[0], 0, 4); // Jahr $translation["timezone"] = strtoupper(substr($resRaw[3], 6, 1)); // Z = UTC // In US Metars wird angegeben, ob die Werte automatisch erstellt werden, oder eine manuelle // Korrektur erfolgt. if (strtoupper($resRaw[4]) == "COR" || strtoupper($resRaw[4]) == "AUTO") { $translation["correctionMode"] = strtoupper($resRaw[4]); $i = 5; } else { $translation["correctionMode"] = "none"; $i = 4; } // nächster Block ist der Wind // es gibt im Grunde die folgenden Möglichkeiten // a) 00000KMH bzw. KT bzw. MPS // b) VRBdd(d)KMH bzw KT bzw MPS d= ziffer VRB = Variabel // c) ddddd(d)KMH bzw KT bzw MPS d= ziffer wobei die ersten 3 immer die Windrichtung sind // d) ddddd(d)Gdd(d)KMH bzw KT bzw MPS d= ziffer wobei die ersten 3 immer die Windrichtung sind $wind_raw = $resRaw[$i]; $i++; // untersuche die ersten 5 Digits vom Wind // wenn diese 00000 sind, ist es Windstill vgl. a) if (strtoupper(substr($wind_raw, 0, 5)) == "00000") { $translation["windclear"] = "windstill"; $translation["boolWind"] = false; $translation["windfrom_a"] = 0; $translation["windfrom_b"] = 0; $translation["mainWindspeed"] = 0; // die Einheit für den Wind wird dann hier ausgelesen $translation["mainWindspeedUnit"] = unitUnifier(trim(substr($wind_raw, 5, 3))); // untersuche die ersten 3 Digits auf VRB } elseif (strtoupper(substr($wind_raw, 0, 3)) == "VRB") { $translation["windclear"] = "Windrichtung variabel"; $translation["boolWind"] = true; // ansonsten sind die ersten 3 Digits immer die Windrichtung } else { $tmpwdirection = strtoupper(substr($wind_raw, 0, 3)); $translation["windclear"] = "Wind aus {$tmpwdirection} Grad"; $translation["boolWind"] = true; } // wenn es also Wind vorhanden = Variante b) oder c) oder d) if ($translation["boolWind"]) { // check ob Boeen vorhanden sind $pos = strpos(strtoupper($wind_raw) , "G"); if ($pos !== false) { $translation["gusts"] = true; if ($pos == 5) { $translation["mainWindspeed"] = substr($wind_raw, 3, 2); $translation["windclear"] = $translation["windclear"] . " mit {$translation["mainWindspeed"]}"; } elseif ($pos == 6) { $translation["mainWindspeed"] = substr($wind_raw, 3, 3); $translation["windclear"] = $translation["windclear"] . " mit {$translation["mainWindspeed"]}"; } $translation["gustsUpTo"] = strtoupper(substr($wind_raw, $pos + 1, 3)); if (substr($translation["gustsUpTo"], 2, 1) == "K" || substr($translation["gustsUpTo"], 2, 1) == "M") { $translation["gustsUpTo"] = substr($translation["gustsUpTo"], 0, 2); $translation["mainWindspeedUnit"] = unitUnifier(trim(substr($wind_raw, $pos + 3, 3))); } else { $translation["gustsUpTo"] = substr($translation["gustsUpTo"], 0, 3); $translation["mainWindspeedUnit"] = unitUnifier(trim(substr($wind_raw, $pos + 4, 3))); } $translation["windclear"] = $translation["windclear"] . " {$translation["mainWindspeedUnit"]}, in Spitzen mit {$translation["gustsUpTo"]} {$translation["mainWindspeedUnit"]}"; }else { //wenn es keine Booen gibt, dann also Variante b oder c $translation["gusts"] = false; // wenn Wind zweistellig, also an dritter Stelle schon eine Einheit folgt if (strtoupper(substr($wind_raw, 5, 1)) == "K" || strtoupper(substr($wind_raw, 5, 1)) == "M") { $translation["mainWindspeed"] = substr($wind_raw, 3, 2); // die Einheit für den Wind wird dann hier ausgelesen $translation["mainWindspeedUnit"] = unitUnifier(trim(substr($wind_raw, 5, 3))); $translation["windclear"] = $translation["windclear"] . " mit {$translation["mainWindspeed"]} {$translation["mainWindspeedUnit"]}"; } else { $translation["mainWindspeed"] = substr($wind_raw, 3, 3); // die Einheit für den Wind wird dann hier ausgelesen $translation["mainWindspeedUnit"] = unitUnifier(trim(substr($wind_raw, 6, 3))); $translation["windclear"] = $translation["windclear"] . " mit {$translation["mainWindspeed"]} {$translation["mainWindspeedUnit"]}"; } } } var_dump($resRaw); var_dump($translation); } } else { myerror("ICAO-Code nicht valide"); } } function unitUnifier($str_input) { if (strtoupper($str_input) == "KT") { $out = "kt"; } elseif (strtoupper($str_input) == "MPS") { $out = "m/s"; } elseif (strtoupper($str_input) == "KMH") { $out = "km/h"; } return $out; }; function myerror($msg) { header("HTTP/1.0 404 Not Found"); echo $msg; die(); } ?>

Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).

VersionSystem time (s)User time (s)Memory (MiB)
8.3.70.0070.01117.00
8.3.60.0110.00418.81
8.3.50.0120.00916.91
8.3.40.0150.00019.46
8.3.30.0090.00619.42
8.3.20.0050.00320.59
8.3.10.0000.00824.06
8.3.00.0080.00020.03
8.2.180.0060.01217.25
8.2.170.0060.01022.96
8.2.160.0090.00619.73
8.2.150.0040.00424.18
8.2.140.0000.00824.66
8.2.130.0070.00219.52
8.2.120.0090.00026.35
8.2.110.0000.00921.43
8.2.100.0060.00618.53
8.2.90.0080.00019.42
8.2.80.0050.00318.18
8.2.70.0090.00318.13
8.2.60.0000.00818.18
8.2.50.0050.00318.18
8.2.40.0040.00420.79
8.2.30.0030.00519.63
8.2.20.0000.00818.34
8.2.10.0060.00318.43
8.2.00.0000.00718.50
8.1.280.0150.00025.92
8.1.270.0080.00022.38
8.1.260.0050.00326.35
8.1.250.0050.00328.09
8.1.240.0060.00321.50
8.1.230.0090.00319.48
8.1.220.0080.00517.91
8.1.210.0090.00318.77
8.1.200.0100.00017.72
8.1.190.0060.00317.63
8.1.180.0030.00618.10
8.1.170.0030.00618.91
8.1.160.0030.00619.43
8.1.150.0040.00419.18
8.1.140.0000.00819.86
8.1.130.0000.00719.21
8.1.120.0100.00017.71
8.1.110.0080.00017.77
8.1.100.0020.01017.77
8.1.90.0080.00017.76
8.1.80.0080.00017.91
8.1.70.0000.00817.93
8.1.60.0000.00918.04
8.1.50.0040.00417.94
8.1.40.0040.00817.96
8.1.30.0040.00418.03
8.1.20.0060.00317.96
8.1.10.0040.00417.98
8.1.00.0030.00617.87
8.0.300.0000.00820.09
8.0.290.0060.00317.25
8.0.280.0040.00418.85
8.0.270.0020.00517.54
8.0.260.0110.00017.39
8.0.250.0040.00417.36
8.0.240.0050.00317.36
8.0.230.0030.00617.49
8.0.220.0040.00417.41
8.0.210.0050.00217.30
8.0.200.0030.00317.49
8.0.190.0060.00317.50
8.0.180.0030.00617.54
8.0.170.0040.00417.48
8.0.160.0030.00517.43
8.0.150.0070.00017.43
8.0.140.0040.00417.36
8.0.130.0060.00013.95
8.0.120.0090.00215.70
8.0.110.0070.00315.72
8.0.100.0080.00215.75
8.0.90.0060.00415.66
8.0.80.0090.00715.75
8.0.70.0050.00515.67
8.0.60.0050.00515.71
8.0.50.0100.00015.67
8.0.30.0130.00516.66
8.0.20.0130.00716.62
8.0.10.0030.00715.64
8.0.00.0030.01215.72
7.4.330.0030.00315.55
7.4.320.0000.00717.13
7.4.300.0000.00717.00
7.4.290.0000.00917.08
7.4.280.0000.00817.00
7.4.270.0000.00717.06
7.4.260.0050.00517.00
7.4.250.0100.00115.54
7.4.240.0090.00215.49
7.4.230.0080.00315.51
7.4.220.0030.01315.52
7.4.210.0130.00515.48
7.4.200.0060.00415.49
7.4.190.0120.00013.86
7.4.180.0130.00013.84
7.4.160.0120.00716.06
7.4.150.0120.00515.62
7.4.140.0070.01016.87
7.4.130.0110.00515.46
7.4.120.0100.01116.32
7.4.110.0110.00515.45
7.4.100.0130.00615.53
7.4.90.0100.00615.46
7.4.80.0160.00216.65
7.4.70.0080.00715.44
7.4.60.0100.00715.53
7.4.50.0070.00815.41
7.4.40.0120.00415.41
7.4.30.0080.01115.41
7.4.20.0120.00313.75
7.4.10.0100.00513.79
7.4.00.0090.00614.62
7.3.330.0030.00313.84
7.3.320.0030.00313.91
7.3.310.0000.01115.44
7.3.300.0080.00315.52
7.3.290.0110.00416.24
7.3.280.0090.00816.76
7.3.270.0070.01015.66
7.3.260.0120.00716.11
7.3.250.0060.01116.26
7.3.240.0090.00915.96
7.3.230.0070.01215.35
7.3.220.0100.00313.57
7.3.210.0130.00315.39
7.3.200.0110.00515.40
7.3.190.0090.00615.40
7.3.180.0080.00915.45
7.3.170.0080.00515.29
7.3.160.0120.00515.33
7.3.150.0020.00713.69
7.3.140.0100.00313.79
7.3.130.0050.00513.81
7.3.120.0040.00413.68
7.3.110.0040.00213.83
7.3.100.0040.00213.60
7.3.90.0000.00713.87
7.3.80.0030.00313.90
7.3.70.0070.00013.95
7.3.60.0000.00613.73
7.3.50.0000.00513.73
7.3.40.0030.00313.89
7.3.30.0000.00613.81
7.3.20.0060.00015.60
7.3.10.0060.00015.50
7.3.00.0000.00615.50
7.2.340.0090.00313.80
7.2.330.0110.00715.52
7.2.320.0080.00915.60
7.2.310.0090.00815.53
7.2.300.0120.00415.54
7.2.290.0070.01015.50
7.2.280.0110.00213.82
7.2.270.0080.00413.97
7.2.260.0060.00613.99
7.2.250.0070.00713.80
7.2.240.0120.00013.95
7.2.230.0080.00413.83
7.2.220.0060.00613.79
7.2.210.0080.00413.94
7.2.200.0130.00013.93
7.2.190.0130.00014.02
7.2.180.0060.00614.00
7.2.170.0130.00013.99
7.2.160.0090.00413.86
7.2.150.0090.00615.65
7.2.140.0040.00915.75
7.2.130.0090.00415.71
7.2.120.0080.00415.73
7.2.110.0040.00815.73
7.2.100.0130.00015.57
7.2.90.0070.00715.65
7.2.80.0130.00015.57
7.2.70.0090.00415.78
7.2.60.0110.00216.58
7.2.50.0110.00315.62
7.2.40.0080.00415.70
7.2.30.0090.00415.64
7.2.20.0070.00715.64
7.2.10.0100.00315.68
7.2.00.0100.00417.53
7.1.330.0120.00014.48
7.1.320.0120.00014.65
7.1.310.0120.00014.62
7.1.300.0090.00314.76
7.1.290.0130.00014.63
7.1.280.0040.00814.62
7.1.270.0100.00214.53
7.1.260.0070.00514.71
7.1.250.0100.00214.56
7.1.240.0100.00214.54
7.1.230.0090.00314.52
7.1.220.0130.00014.67
7.1.210.0060.00614.67
7.1.200.0080.00415.39
7.1.190.0080.00414.52
7.1.180.0060.00614.62
7.1.170.0000.01214.52
7.1.160.0080.00414.46
7.1.150.0120.00014.64
7.1.140.0080.00414.53
7.1.130.0060.00614.47
7.1.120.0080.00414.46
7.1.110.0000.01214.61
7.1.100.0040.00916.42
7.1.90.0000.01214.67
7.1.80.0040.00814.73
7.1.70.0100.00816.09
7.1.60.0230.00925.20
7.1.50.0240.00825.05
7.1.40.0230.00824.98
7.1.30.0200.01024.94
7.1.20.0250.00725.05
7.1.10.0090.01015.77
7.1.00.0130.00615.83
7.0.330.0080.00414.49
7.0.320.0080.00414.71
7.0.310.0070.00714.66
7.0.300.0110.00314.48
7.0.290.0120.00014.71
7.0.280.0060.00614.62
7.0.270.0090.00314.68
7.0.260.0080.00414.46
7.0.250.0000.01214.60
7.0.240.0110.00014.71
7.0.230.0090.00314.49
7.0.220.0090.00314.52
7.0.210.0120.00014.44
7.0.200.0080.00915.88
7.0.190.0120.00915.97
7.0.180.0110.00815.46
7.0.170.0110.00715.65
7.0.160.0110.00815.46
7.0.150.0060.01315.60
7.0.140.0080.01115.64
7.0.130.0060.01115.73
7.0.120.0070.01115.63
7.0.110.0140.00615.70
7.0.100.0080.00915.43
7.0.90.0090.01015.67
7.0.80.0100.00715.67
7.0.70.0080.01015.80
7.0.60.0120.00615.52
7.0.50.0070.00815.56
7.0.40.0110.00815.69
7.0.30.0030.01215.78
7.0.20.0050.01315.64
7.0.10.0120.00615.68
7.0.00.0050.01215.72
5.6.400.0070.00413.07
5.6.390.0120.00013.03
5.6.380.0120.00013.13
5.6.370.0080.00412.94
5.6.360.0120.00013.10
5.6.350.0090.00212.82
5.6.340.0110.00012.86
5.6.330.0060.00612.78
5.6.320.0000.01113.04
5.6.310.0030.00913.04
5.6.300.0080.00412.88
5.6.290.0060.00613.04
5.6.280.0080.00412.90
5.6.270.0040.00813.05
5.6.260.0080.00413.06
5.6.250.0090.00313.14
5.6.240.0040.00813.13
5.6.230.0100.00213.27
5.6.220.0090.00313.20
5.6.210.0120.00013.17
5.6.200.0090.00313.16
5.6.190.0090.00413.25
5.6.180.0130.00013.02
5.6.170.0060.00613.35
5.6.160.0040.00713.24
5.6.150.0080.00412.99
5.6.140.0120.00013.27
5.6.130.0070.00413.21
5.6.120.0060.00613.15
5.6.110.0110.00013.03
5.6.100.0120.00013.12
5.6.90.0090.00312.85
5.6.80.0050.00512.86
5.6.70.0060.00613.09
5.6.60.0090.00213.13
5.6.50.0090.00312.71
5.6.40.0110.00013.05
5.6.30.0080.00412.86
5.6.20.0080.00312.90
5.6.10.0080.00312.90
5.6.00.0060.00612.89

preferences:
40.8 ms | 401 KiB | 5 Q