[PHP] Keywords inlezen met hun waarden vanuit een textfile

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,
ik probeer verschillende waarden te importeren uit een textfile. Deze waarden worden dan in php opgevangen en verwerkt.
Probleem is dat ik een beetje vastloop met het "selecteren" van deze waarden.
bv een tekst file ziet er uit als:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Begin:Yes
Version:2.0

Event:Start
Startdate:xxxx
Enddate:xxxxxx
Description:blablabla
Event:End

Event:Start
Startdate:yyyy
Enddate:yyyyyy
Description:blablabla
Event:End

End:Yes


Nu moet ik dus variablen krijgen $startdate, $enddate, $description.
Maar ik heb weinig tot geen ervaring met het werken van textfiles.
ik heb op php.net dingen gelezen maar dat werkt meestal met een systeem van regelnummers en die weet ik dus niet.
Of andere systemen zijn tekst tot aan een bepaald keywoord, of na een bepaald keywoord.
Maar nergens vind ik eigenlijk iets vanaf een bepaald keyword tot een ENDLINE

Kan iemand mij misschien een tip/op weg helpen?

heb ook gekeken of je tekst als een string kan nemen (via get_contents) maar dat maakt het enkel lastiger denk ik.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Kijk eens naar regular expressions, waarover ook een leuk stukje in onze FAQ staat. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Priet
  • Registratie: Januari 2001
  • Laatst online: 21:17

Priet

To boldly do what no one has..

Regel voor regel inlezen en per regel controleren met wat voor soort regel je te maken hebt.

Dus als je een regel 'End:Yes' inleest weet je dat je weer een 'blokje' verwerkt hebt, etc etc.

"If you see a light at the end of a wormhole, it's probably a photon torpedo!"


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
-NMe- schreef op dinsdag 13 september 2005 @ 13:39:
Kijk eens naar regular expressions, waarover ook een leuk stukje in onze FAQ staat. :)
hmm, ja, sorry was nog iets vergeten te melden.
er kunnen andere stukken tekst tussen deze verschillende regels staan
dus bv dit kan ook:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Begin:Yes
Version:2.0

Event:Start
Startdate:xxxx
Enddate:xxxxxx
Description:blablabla
Titel:grmbl
Event:End

Event:Start
Blaatgeval: jajajaja
Startdate:yyyy
Enddate:yyyyyy
Description:blablabla
Titel:zever
Event:End

End:Yes


hierdoor kan ik dus niet zomaar van "xxx" tot "xxx" selecteren...

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21:47

Creepy

Tactical Espionage Splatterer

Lees de file regel voor regel in en split op een dubbelepunt ?

Hier staan wel bruikbare zaken tussen http://nl2.php.net/manual/en/ref.filesystem.php ;)

* Creepy is spuit 11....

[ Voor 7% gewijzigd door Creepy op 13-09-2005 13:44 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Ik had wat in pseudo-code geprobeerd, maar dat wordt toch lastig met $i en de array, dus dan zo maar. Wel moet je nog wat inbouwen dat hij rekening houdt met het begin en eind van de file.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
$i = 0;
$info = array();
$lines = file('je-file.txt');
foreach($lines as $line) {
    $line_parts = explode(":",$line);
    if($line == "Event:End") {
        $i++;
    }
    elseif( $line_parts[0] != "Event" && strlen($line) > 0) {
        $info[$i][$line_parts[0]] = $line_parts[1];
    }
}
print_r($info);

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
GlowMouse schreef op dinsdag 13 september 2005 @ 13:50:
Ik had wat in pseudo-code geprobeerd, maar dat wordt toch lastig met $i en de array, dus dan zo maar. Wel moet je nog wat inbouwen dat hij rekening houdt met het begin en eind van de file.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
$i = 0;
$info = array();
$lines = file('je-file.txt');
foreach($lines as $line) {
    $line_parts = explode(":",$line);
    if($line == "Event:End") {
        $i++;
    }
    elseif( $line_parts[0] != "Event" && strlen($line) > 0) {
        $info[$i][$line_parts[0]] = $line_parts[1];
    }
}
print_r($info);
thanks!
dit helpt echt veel.
Nu kom ik er wel uit denk ik _/-\o_

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
GlowMouse schreef op dinsdag 13 september 2005 @ 13:50:
Ik had wat in pseudo-code geprobeerd, maar dat wordt toch lastig met $i en de array, dus dan zo maar. Wel moet je nog wat inbouwen dat hij rekening houdt met het begin en eind van de file.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
$i = 0;
$info = array();
$lines = file('je-file.txt');
foreach($lines as $line) {
    $line_parts = explode(":",$line);
    if($line == "Event:End") {
        $i++;
    }
    elseif( $line_parts[0] != "Event" && strlen($line) > 0) {
        $info[$i][$line_parts[0]] = $line_parts[1];
    }
}
print_r($info);

één dingetje klopt niet hier aan, hij verhoogd nooit $i
maw, hij komt nooit hierin:

Opgelost, trim() doet altijd wonderen :)
Bedankt!!
PHP:
1
2
3
if($line == "Event:End") {
        $i++;
    }

[ Voor 9% gewijzigd door Verwijderd op 13-09-2005 14:19 ]


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Wellicht staan er spaties of andere meuk in, trim die $line anders eerst :)
En anders kan je natuurlijk ook die $line_parts gebuiken, je weet dat het tweede stukje "End" moet zijn en het eerste "Event".

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Erkens schreef op dinsdag 13 september 2005 @ 14:17:
Wellicht staan er spaties of andere meuk in, trim die $line anders eerst :)
En anders kan je natuurlijk ook die $line_parts gebuiken, je weet dat het tweede stukje "End" moet zijn en het eerste "Event".
idd, dat was het probleem (trim). Heb het net opgelost
Toch bedankt
Pagina: 1