Text aus einer txt datei importieren

Swordwolf360

Grünschnabel
Hallo zusammen

Ich möchte auf meiner Website: http://sx.000a.biz/
ein kleines tools für einen simplen Youtubeplayer einrichten.
Ich hab meinen kleine Php-Code so weit, dass er aus einem erstellten Array, mit Links zu den entsprechenden Videos eine ausgabe in den Direkt Link macht.

Nun möchte ich, dass er die Linkpassagen nicht aus dem Array entnimmt, sondern dass er sie aus einem .txt file (ytlink.txt) in ein array lädt und sie dann erst ausgibt.

Folgenden Code habe ich schon geschrieben und ausgetestet:
PHP:
<?php
$youtubelink = array("aIHyiVXWQBQ" ,"dbgLdBZ_5zs" ,"p8bx44C81WQ");
        srand(time()); 
        $funktionrandom = (rand()%3); ?>

mit fogendem Code gebe ich die Linkpassagen im Player als random aus:
PHP:
<?php echo $youtubelink[$funktionrandom] ?>

Meine Lösung (funktioniert aber nicht):

PHP:
$ytliste = 'http://sx.000a.biz/media/ytliste.txt';
$youtubelink = file ( $ytliste );
        srand(time()); 
        $funktionrandom = (rand()%3); ?>


Mit freundlichen Grüssen
Raphael
 
Hallo,

ich glaube dass $youtubelink ein Array darstellt, bei dem jedes Element eine neue Zeile darstellt.
de.php.net hat gesagt.:
Jedes Element des Arrays entspricht einer Zeile in der Datei, ohne dass das Zeilenende entfernt wird.

Mach mal die Zeile wie folgt:
PHP:
$youtubelink = explode(" ", file ($ytliste)[0]);

Oder du schreibst einfach jeden Link in eine extra Zeile ;)

Ausserdem würde ich die Datei nicht über http einlesen (mit einer URL), die Datei liegt doch auf dem selben Server, oder? Dann kannst du auch die Datei mit "media/ytliste.txt" ansprechen.

// Edit:
Ausserdem würde ich die rand() Funktion mit den Paramtern eingrenzen. Du willst eine Zahl zwischen 0 und 2, also rufst du rand(0, 2) auf. Dann sparst du dir das Modulo 3 ;)

Gruß
BK
 
Zuletzt bearbeitet:
Ok ich habe jetzt den Code umgstellt und die Funktion "fopen" benützt. Die direkt URL benütze ich, weil ich mit einem CMS arbeite und sich der Link zur aktuellen Page immer wieder verändert.

PHP:
$ytliste = fopen('http://sx.000a.biz/media/ytliste.txt');
$youtubelink = file ( $ytliste );
        srand(time()); 
        $funktionrandom = (rand()%3); ?>

Nun funktioniert die Ausgabe nicht mehr. Ich glaube ich muss deklarieren, dass es eine feste URL ist, aber ich weiss nicht wie :D Bin noch Anfänger in PHP..

MfG
Raphael
 
Hallo,

nein so hab ich das nicht gemeint :D Habs eh schon längst wieder wegeditiert, bitte schau oben nocheinmal. Habe meine Antwort geschrieben und dann nochmal die Frage gelesen und gemerkt dass ich voll daran vorbei geschrieben habe ;)

// Edit: Ausserdem habe ich mal die Textdatei aufgemacht (http://sx.000a.biz/media/ytliste.txt). Schreibe die Links nur mit einem Leerzeichen getrennt rein, nicht mit den Anführungsstrichen und Kommatas.

Gruß
BK
 
Hi!


So ich hab mich mal hingesetzt und die Vorschläge meines Vorgängers in einer Funktion zusammengefasst:

PHP:
function ytlink(){
	$ytliste = file_get_contents("http://sx.000a.biz/media/ytliste.txt"); // Pfad zum File
	$ytliste = str_replace(array("\"",","),"",$ytliste); // überflüssige Zeichen (",) löschen - diese Zeile könnte man löschen, wenn die videos durch leerzeichen getrennt werden
	
	$ytvideos = explode(" ",$ytliste);			// Aufspalten in einzelne Array-Einträge
	$vidcount = count($ytvideos);				// Anzahl der Videos berechnen
	
	$rand = rand(0,$vidcount-1);				// Zufallszahl berechnen
	
	return $ytvideos[$rand];					// Rückgabe des Links
}


Die Verwendung würde dann so aussehen:

PHP:
<?php echo ytlink();?>
oder alternativ:
PHP:
<?= ytlink(); ?>


noch ne kleine Anmerkung: Als ich den Script auf meinem Server getestet habe, hat er Probleme mit dem Lesen des Files. Darum würde ich dir empfehlen, dennoch den serverinternen Pfad zu der Datei zu verwenden. Um die Funktion auch an verschiedenen Stellen im Script zu verwenden, kannst du ihn dann auch absolut anstatt relativ angeben:

/home/cms/media/ytfiles.txt

ich hoffe es war einigermaßen verständlich ;)

lg
 
Zurück