webForumDet fria alternativet

Sortera in information i en MySQL-databas från txt-fil

PHP

3 svar · 321 visningar · startad av lillebror

Medlem sedan apr. 20041 597 inlägg
Frågan#1

Hej!

Jag har i en tidigare tråd fått hjälp med att sortera ut det aktuella väderinnehållet från en vädersida. Denna väderinformation ser ut på följande sätt:

ESSP 240820Z 28012KT 9999 BR BKN010 03/01 Q1015 RWY 27 CLEAR and DRY 51-100 PCT LESS THAN 1 MM BA GOOD=

ESSP är en identifierare för Norrköpings flygplats. Nu vill jag föra in hela stycket ovan i en MySQL-databas. ESSP vill jag kopiera från strängen och lagra i databasen som ett unikt ID i ett eget fält. Därefter vill jag föra in hela kodstycket + identifieraren i en textsträng i databasen.

Jag har för mig att jag sätt en funktion som heter preg_split som kanske kan vara användbart? Någon som har erfarenhet av detta förfarande? Att lagra själv information i databasen vet jag hur man gör men det är just att bryta ut rätt information som jag inte riktigt har koll på.

Mvh,
Fredrik

Medlem sedan apr. 20041 597 inlägg
#2

Följande kodstycke fungerade:

$metar = explode(" ", "ESMS 240920Z 25005KT 220V290 0500 R17/0700N R35/0600N FG VV002 06/06 Q1020=");
echo $metar[0]."<br />"; //visar identifieraren

Jag använder mig av explode där man helt enkelt anger att den ska kapa strängen vid varje mellanrum...

Medlem sedan apr. 20041 597 inlägg
#3

Ovanstående kodstycke fungerade när jag placerade in en sträng direkt i funktionen explode. När jag prövar igen men denna gång placerar funktionen explode med tillhörande vektor $lol i for-satsen för att extrahera identifieraren från strängen så att jag därefter kan lagra den i databasen blir det fel.

Felet jag får är:
Parse error: parse error, unexpected '[' in /XXX/metar.php on line 23

preg_match_all("/[\r\n]{1,2}([A-Z]{4}.+?)=/s",$sp,$hej); 
$lol = $hej[0];
  
for($i=0;$i < count($lol); ++$i) 
{ 
echo($lol[$i]); 
echo "<br />";
$metar = explode(" ", lol[$i]); 
echo $metar[0]."<br />"; //rad 23
}

Någon idé om vad som kan vara fel?

Medlem sedan apr. 20041 597 inlägg
#4

Mitt öga hade missat en "$" i for-satsen framför vektor "lol"...så dumt :e Nu fungerar det som jag ville ha det!

preg_match_all("/[\r\n]{1,2}([A-Z]{4}.+?)=/s",$sp,$hej); 
$lol = $hej[0];
  
for($i=0;$i < count($lol); ++$i) 
{ 
echo($lol[$i]); 
echo "<br />";
$metar = explode(" ", [B][red]$[/red][/B]lol[$i]); 
echo $metar[0]."<br />"; //rad 23
}
259 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)