2012-03-25 3 views
5

Während ich mit dem Schreiben meiner Site in PHP und MySQL beginne, ist eines der ersten PHP-Skripte, das ich geschrieben habe, ein Skript, um meine Datenbank zu initialisieren. Löschen/erstellen Sie die Datenbank. Löschen/erstellen Sie jede der Tabellen. Laden Sie dann die Tabellen aus Literalen in das Skript.Kann ich eine .TXT-Datei mit PHP lesen?

Das funktioniert alles gut! Whoohoo :-)

Aber ich würde lieber die Daten aus Dateien lesen, anstatt sie im PHP-Skript hart-Code.

Ich habe ein paar Bücher über PHP, aber sie sind alle auf Web-Entwicklung mit MySQL ausgerichtet. Ich kann nichts über das Lesen und Schreiben normaler Dateien finden.

Ja, ich weiß, es gibt eine Vielzahl von Fragen hier auf Stackoverflow über das Lesen von TXT-Dateien, aber wenn ich mir jeden anschaue, sind sie für C oder C# oder VB oder Perl. Ich fange an zu denken, dass PHP einfach keine Dateien lesen kann :-(

Alles, was ich brauche, ist ein kurzes PHP-Beispiel, wie man eine TXT-Datei auf dem Server öffnet, sequenziell liest, die Daten auf dem Bildschirm anzeigt und schließen sie die Datei, wie in diesem Pseudo-Code:

program readfile; 
handle = open('myfile.txt'); 
data = read (handle); 
while (not eof (handle)) begin 
    display data; 
    data = read (handle); 
    end; 
close (handle); 
end;  

ich werde auch Dateien auf dem Server schreiben muß, wenn ich zum Teil meiner Website, wo Menschen Avatare laden und sie als JPG speichern oder GIF-Dateien. Aber das ist für später.

Dank!

+0

Wenn Sie Ihr Initialisierungsscript nur einmal ausführen, sollten sich Ihre Daten in der Datenbank befinden und Sie müssen keine Dateien mehr lesen, oder? Ich nehme auch an, dass Sie gerade angefangen haben, in PHP zu schreiben, sollten Sie diese großartige Ressource bookmarken: http://php.net/manual/ – Eric

+2

"Ja, ich weiß, es gibt eine Unmenge Fragen hier auf Stackoverflow über das Lesen von TXT-Dateien, aber wann Ich schaue mir jeden an, sie sind für C oder C# oder VB oder Perl. Ich fange an zu denken, dass PHP einfach keine Dateien lesen kann :-("Wenn auf StackOverflow keine Frage gestellt wird, könnte es auch eine sein Hinweis darauf, dass es ziemlich trivial ist und an einem offensichtlichen Ort zu finden ist, zB das Handbuch der Programmiersprache. :-) – Eric

+0

Aber ich möchte keine Daten in mein Skript einbetten. Ich möchte meine Daten in einer Textdatei ... Und bitte, bitte, bitte lesen Sie meine Frage vollständig, bevor Sie mir eine rotzige Antwort geben !!! Ich habe mehrere Bücher über PHP, und keiner von ihnen erwähnt Dateihandling. Sie alle sprechen über die Verwendung von PHP für die Web-Entwicklung und erwähnen nicht die Handhabung von Dateien. – Fredashay

Antwort

3

Nun, da Sie fragen sind über Ressourcen zu dem Thema, gibt es ein ganzes Buch darüber in der PHP.net docs.

Ein einfaches Beispiel:

<?php 
// get contents of a file into a string 
$filename = "/usr/local/something.txt"; 
$handle = fopen($filename, "r"); 
$contents = fread($handle, filesize($filename)); 
fclose($handle); 
?> 
+0

Danke! Das ist nahe an dem, was ich brauche. Aber ich würde es vorziehen, jede Zeile der Datei mit einem separaten Lesevorgang zu lesen, so dass ich jede Zeile getrennt mit Teilstr. Wenn Sie die ganze Datei in einer großen langen Zeichenfolge speichern möchten, ist es ein Problem, sie zu analysieren. – Fredashay

22

Vom PHP manual for fread():

<?php 
// get contents of a file into a string 
$filename = "/usr/local/something.txt"; 
$handle = fopen($filename, "r"); 
$contents = fread($handle, filesize($filename)); 
fclose($handle); 
?> 

EDIT pro den Kommentar können Sie eine Datei Zeile für Zeile lesen mit fgets()

<?php 
$handle = @fopen("/tmp/inputfile.txt", "r"); 
if ($handle) { 
    while (($buffer = fgets($handle, 4096)) !== false) { 
     echo $buffer; 
    } 
    if (!feof($handle)) { 
     echo "Error: unexpected fgets() fail\n"; 
    } 
    fclose($handle); 
} 
?> 
+0

Danke! Das ist nahe an dem, was ich brauche. Aber ich würde es vorziehen, jede Zeile der Datei mit einem separaten Lesevorgang zu lesen, so dass ich jede Zeile getrennt mit Teilstr. Wenn Sie die ganze Datei in einer großen langen Zeichenfolge speichern möchten, ist es ein Problem, sie zu analysieren. – Fredashay

+0

@Fredashay können Sie das mit 'fgets' tun, ich habe meine Antwort aktualisiert – JKirchartz

+0

Ja! Das ist genau das, was ich will :-) Nochmals vielen Dank! Ich wünschte, ich könnte dir einen Up-Ratte geben, aber ich bin nur ein Peon hier :-( – Fredashay

2

Warum Sie nicht PHP-Dokumentation über fopen

$file = fopen("source/file.txt","r"); 
    if(!file) 
    { 
     echo("ERROR:cant open file"); 
    } 
    else 
    { 
     $buff = fread ($file,filesize("source/file.txt")); 
     print $buff; 
    } 
+0

Warum liest du meine Frage nicht? – Fredashay

+1

PHP kann Dateien lesen, alles, was Sie tun müssen, ist 'fopen()' und ' fread() ', das auf php.net ausführlich dokumentiert ist – Harry

0

Sie wollen lesen Zeile für Zeile lesen? Verwenden Sie fgets.

$handle = @fopen("myfile.txt", "r"); 
if ($handle) { 
    while (($content = fgets($handle, 4096)) !== false) { 
     //echo $content; 
    } 
    if (!feof($handle)) { 
     echo "Error: unexpected fgets() fail\n"; 
    } 
    fclose($handle); 
} 
4

Alles was ich brauche ist ein kurzes PHP Beispiel dafür, wie eine TXT-Datei auf dem Server zu öffnen, liest sie nacheinander auf dem Bildschirm, um die Daten anzuzeigen, und schließen Sie die Datei, wie in diesem Pseudo-Code :

echo file_get_contents('/path/to/file.txt'); 

Ja, die kurze, siehe file_get_contents, brauchen Sie in der Regel nicht eine Schleife:

$file = new SPLFileObject('/path/to/file.txt'); 
foreach($file as $line) { 
    echo $line; 
} 
1

php-file read ist ein einfaches Tutorial über das Lesen von Textdatei. Es ist ein sehr einfaches Tutorial, deckt aber auch verschiedene Aspekte des Dateilesens ab.