Scheiden van een file

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Stefan srepmek

stefan srepmek

23/05/2008 23:44:00
Quote Anchor link
Hallo,

ik heb een log file die ieder 5min verandert

sensor0,23:30:08,2008-05-23,14.56
sensor1,23:30:13,2008-05-23,20.50
May 23 23:30:14 Sensor 2 #0 3316
May 23 23:30:14 Sensor 2 #1 7498

Het ongelukkige is dat de 1ste 2 regels komma's bevatten en regels 3 en 4 dus niet

Hoekan ik nu de regels scheiden

($data = fgetcsv ($handle, ","))

kan hier nog wat achter zodat spaties ook gescheiden worden?

Bedankt alvast
 
PHP hulp

PHP hulp

20/11/2024 14:24:31
 
Han eev

Han eev

24/05/2008 11:58:00
Quote Anchor link
Voor elke regel zijn eigen afhandeling maken, anders kan het even niet

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?PHP
$data
= fgets($handle);

//en dan zelf
$tempdata = explode(',',$data);
if(count($tempdata) > 2) {
// voor eerste regel afhandelen, dus met komma's
} else {
$tempdata = explode(' ',$data);
}

?>


Snappie?
 
Joren de Wit

Joren de Wit

24/05/2008 12:05:00
Quote Anchor link
@Han: dan zou ik het wel op een andere manier aanpakken, namelijk door te kijken of de regel komma's bevat:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$aLines
= file('log.txt');

foreach($aLines as $sLine)
{

    if(strpos($sLine, ','))
    {

        $aFields = explode(',', $sLine);
        
        // Verdere bewerkingen
    }
    else
    {
        $aFields = explode(' ', $sLine);
        
        // Verdere bewerkingen
    }
}

?>
 
Winston Smith

Winston Smith

24/05/2008 12:06:00
Quote Anchor link
Voor het scheiden van de regels kan je ook kijken of je op \n kan exploden.
 
Joren de Wit

Joren de Wit

24/05/2008 12:07:00
Quote Anchor link
@Kasper: in dat geval zou ik file() gebruiken om de inhoud van de logfile uit te lezen. Dan komt elke regel direct al onder een nieuwe index in de betreffende array...
 
Stefan srepmek

stefan srepmek

25/05/2008 00:27:00
Quote Anchor link
Oke ik ben het spoor even kwijt.........
Nu moet ik ook eerlijk zeggen dat ik een beginnenling ben maar goed.

ik had dit
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php
include("connect.php");
error_reporting (E_ALL);

shell_exec('rm /opt/var/log/temperature');

shell_exec('digitemp_DS2490 -i -a -r 5000 -o "sensor%s,%H:%M:%S,%Y-%m-%d,%.2C" -l /opt/var/log/temperature');

$openfile = "/opt/var/log/temperature1";
$row = 0;
$handle = fopen ($openfile,"r");
while ($data = fgetcsv ($handle, 1000, ","))

{

   if($row == '0')
   {

       $num = count ($data);
       echo "$num velden in lijn nummer $row: \n";
       echo "Dit hoort thuis in TABLE 1 \n\n";
       for ($c=0; $c < $num; $c++)
       {

           echo $data[$c] . "\n";
       }

$write = mysql_query("INSERT INTO $data[0] (tijd, datum, temp) VALUES('$data[1]', '$data[2]', '$data[3]')");
if (!$write)
{

   die ('Kan niet in digitemp schrijven : ' . mysql_error());
}


       $row = '1';
   }

   else
   {
       $num = count ($data);
       echo "$num velden in lijn nummer $row: \n";
       $row++;
       echo "Dit hoort thuis in TABLE 2\n\n";
       for ($c=0; $c < $num; $c++)
       {

           print $data[$c] . "\n";
       }

 $write = mysql_query("INSERT INTO $data[0] (tijd, datum, temp) VALUES('$data[1]', '$data[2]', '$data[3]')");
 if (!$write)
 {

 die ('Kan niet in digitemp schrijven : ' . mysql_error());
}
}
}

fclose ($handle);
mysql_close($link);
?>

Dit werkte perfect
kreeg dit als output

4 velden in lijn nummer 0:
Dit hoort thuis in TABLE 1

sensor0
00:09:10
2008-05-25
17.50
4 velden in lijn nummer 1:
Dit hoort thuis in TABLE 2

sensor1
00:09:15
2008-05-25
21.63

Maar goed nu heb ik dus die teller erbij en nou gaat het voor me fout
Krijg dus nu dit:
4 velden in lijn nummer 0:
Dit hoort thuis in TABLE 1

sensor0
00:09:10
2008-05-25
17.50
4 velden in lijn nummer 1:
Dit hoort thuis in TABLE 2

sensor1
00:09:15
2008-05-25
21.63
1 velden in lijn nummer 2:
Dit hoort thuis in TABLE 2

May 25 00:09:16 Sensor 2 #0 3352
1 velden in lijn nummer 3:
Dit hoort thuis in TABLE 2

May 25 00:09:16 Sensor 2 #1 16605

Zoals jullie zien het onderste gedeelte wordt niet opgesplitst en kent het toe aan table 2
Is mijn script totaal verkeerd?
Zo ja help me out
Zo niet kan iemand het voor mij aanvullen?
Mijn dank zal zeer groot zijn ;-)
Gewijzigd op 01/01/1970 01:00:00 door stefan srepmek
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.