Regels lezen uit een txt bestand

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Sjoerd de Graaff

Sjoerd de Graaff

11/12/2014 17:19:47
Quote Anchor link
Ik heb een script waarin een txt bestand wordt geimporteerd, met een top 30 lijst erin. Deze lijst ziet er als volgt uit:

1 8 Mr. Probz - Nothing Really Matters
2 15 Ed Sheeran - Thinking Out Loud

Waarin de meest linkse getallen zeggen wat de plaats van de track vorige week was, middelste is het aantal weken in de lijst en rechts is de songtitel. Tussen deze data zit een tab. Nu wil ik dus een script die een draaiboek voor mij genereert. Ik heb hier staan:

echo ''.$N30.' in de Top 30, goeieavond!';

Dit de opening van de show, waar hij op de plaats van '.$N30.' de nummer 30 van het txt bestand moet lezen. Deze staat simpelweg op de 30e regel van het bestand.

Bovenin het bestand staat een regel:

$N30 = ($e[2]). [2] geeft mij de tracknaam. Dit werkt voor nummer 30, maar niet voor 29, want als ik invul $N29 = ($e[2]); geeft dit mij ook de informatie van track 30.

Als ik invul $N29 = ($e) krijg ik het woord Array als output.

Wat moet ik invullen om de 29e regel van het txt bestand te krijgen? En 28, 27.. enz?
 
PHP hulp

PHP hulp

07/05/2024 21:48:46
 
- Ariën  -
Beheerder

- Ariën -

11/12/2014 17:31:29
Quote Anchor link
Je kan met file() een array-maken met elke regel als item. Vervolgens kan je deze prima met foreach() doorlopen.

Daarbinnen kan je met een explode op "\t" (een tab) de data ophalen.
 
Sjoerd de Graaff

Sjoerd de Graaff

11/12/2014 17:34:53
Quote Anchor link
Dank voor de reactie. Ik ben echt een groentje in de programmeerwereld, zou ik een voorbeeld zou kunnen krijgen toegepast op mijn script?
 
- SanThe -

- SanThe -

11/12/2014 18:13:09
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$songs
= file('songs.txt');

# nummer is welke regel je wilt hebben
$nummer    = rand(0, count($songs)-1);
$song    = explode("\t", $songs[$nummer]);
echo 'plaats: '.$song[0].' weken: '.$song[1].' songtitel: '.$song[2].'<br/>';
?>
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

11/12/2014 19:16:37
Quote Anchor link
PHP heeft daar native functies voor:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
if (false !== $h = fopen('songs.txt', 'r')) {
    $tsv = fgetcsv($h, null, "\t");
    $random = rand(0, count($tsv)-1);
    echo 'plaats: '.$tsv[$random][0].' weken: '.$tsv[$random][1].' songtitel: '.$tsv[$random][2].'<br/>';
}

else {
    echo 'Even Apeldoorn bellen';
}

?>
 
Sjoerd de Graaff

Sjoerd de Graaff

11/12/2014 19:18:37
Quote Anchor link
Ik heb het eerste script geprobeerd. Als ik deze invoer (zonder regel 7) en in het script zeg:

echo ''.$song[2].' in de Top 30, goeieavond! Zometeen hoor je de nieuwste in de top 30 van '.$song[2].' na '.$song.'

krijg ik bij het refreshen van de pagina steeds een ander nummer. Ik moet dus per regel van het txt file dit script weer apart aanpassen, maar hoe doe ik dit? Ik wil dat ik dus kan invoeren '.$N30.' en dat ik dan de titel van deze plaat krijg...
Gewijzigd op 11/12/2014 19:20:03 door Sjoerd de Graaff
 
Eddy E

Eddy E

11/12/2014 20:00:57
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$lines
= file('songs.txt');
foreach ($lines as $line_num => $line) {
    list($info['plek'], $info['vorigeweek'], $info['titel'] = explode("\t", $line);
    $data[] = $info;
}


print_r($data);
?>
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

11/12/2014 20:22:47
Quote Anchor link
Eddy, volgens mij staat er ergens een haakje verkeerd op regel 4
 
Sjoerd de Graaff

Sjoerd de Graaff

12/12/2014 23:13:42
Quote Anchor link
Is het mogelijk om per songnummer een apart script te maken zodat ik bij intypen van '.$N30.' de songtitel van nummer 30 krijg en bij '.$N29.' nummer 29? Ik heb geprobeerd alle scripts naar deze situatie aan te passen, maar het lukt me niet...
 
Sjoerd de Graaff

Sjoerd de Graaff

09/01/2015 20:31:02
Quote Anchor link
Ik krijg het voor elkaar als ik het volgende doe:

$lines = file('data_'.$q.'.txt');
$l_count = count($lines);
for($x = 0; $x< $l_count; $x++)
{
}

als ik '.$lines[29].' invoer krijg ik regel 30 van het txt file te zien. Nu is het enige probleem dat ik alleen de 3e 'tab' met de titel van het nummer wil krijgen. Nu krijg ik ook de data die er voor staat... Zou iemand mij kunnen helpen?
 



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.