tutorials.de Buch-Aktion 02/2012
Like Tree1Danke
  • 1 Beitrag von ZodiacXP
ERLEDIGT
JA
ANTWORTEN
7
ZUGRIFFE
328
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Nils_13 Nils_13 ist offline Mitglied Bronze
    Registriert seit
    Aug 2005
    Beiträge
    25
    Hi,

    ich habe eine ganz simple Textdatei. Das kann ein Text sein, aber durchaus auch ein Quelltext. Diese Datei beinhaltet sozusagen den Kern, die wichtigsten Informationen stehen dort. Nun müssen aber zur weiteren Verarbeitung Zusatzinformationen, unbedingt in die ersten Zeilen der Datei gepackt werden. Das heißt, dass ich nun insgesamt drei Zeilen habe, die vor die Zeilen aus der Datei müssen und dann anschließend wieder in diese abgespeichert werden. Warum nicht einfach ein Beispiel:
    Das ist die Ursprungsdatei:
    Code :
    1
    2
    3
    4
    5
    6
    7
    
    a
    b
    c
    d
    e
    f
    g
    Nun habe ich diese Informationen:
    Code :
    1
    2
    3
    
    1
    2
    3
    Die sollen davorgesetzt werden:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    1
    2
    3
    a
    b
    c
    d
    e
    f
    g
    Nun habe ich aber das Problem, dass die erste Zeile der Grunddatei - in unserem Falle das "a" einfach verloren geht. Wirklich keine Spur mehr. Der Rest ist nach der Aktion immernoch vorhanden, nur diese eine erste Zeile des Inhalts fehlt einfach. An dem Beispiel von eben gezeigt, wäre das das Ergebnis:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    1
    2
    3
    b
    c
    d
    e
    f
    g

    Ich lese die Datei ein, setze die Zeilen davor, setze den Dateizeiger auf den Ursprung und schreibe dann alles via fwrite in die Datei. Habt Ihr eine Idee woran das liegen könnte ?
    PHP-Code:
    $datei fopen("data/".$dateiname"r+");
    $daten fread($datei);
    $daten $highlighter."\r\n".$author."\r\n".$title."\r\n".$daten;
    rewind($datei);
    fwrite($datei$daten);
    fclose($datei); 
     

  2. #2
    kuddeldaddeldu kuddeldaddeldu ist offline Mitglied Diamant
    Registriert seit
    Dec 2007
    Ort
    Bremen
    Beiträge
    3.418
    Hi,

    fread() erwartet einen zweiten Parameter length.

    PHP-Code:
    $daten fread($dateifilesize("data/".$dateiname)); 
    Nimm doch einfach file_get_contents(), wenn Du ja sowieso die ganze Datei einlesen musst.

    LG
     
    Da es nötig zu werden scheint: Ich leiste hier keinen Support über PN. Stellt Rückfragen zu Euren Problemen bitte in Eurem Thread, dann können alle helfen.

  3. #3
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.127
    Wie kuddeldaddeldu schon schrieb, hilft die file_get_contents. Das liefert ein Array zurück.

    Dann erzeugst du ein zweites Array:

    PHP-Code:
    $meta = array('1''2''3'); 
    Nun fügst du alles zusammen:

    PHP-Code:
    $new_file_contents array_merge($meta$file_content); 
    Dies kannst du dann in die ursprüngliche Datei schreiben:

    PHP-Code:
    file_put_contents("file.ext"$new_file_contents); 
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  4. #4
    Nils_13 Nils_13 ist offline Mitglied Bronze
    Registriert seit
    Aug 2005
    Beiträge
    25
    Hi, ah, vielen Dank. Tja, manchmal fehlt einem eben doch ein Parser. Bin eben hauptsächlich mit Object Pascal unterwegs und da arbeitet man mit dem Parser regelrecht zusammen, muss mich da wohl etwas umgewöhnen.
    Edit: Also wäre das alles zuasmmengefasst so zu lösen ? Array wäre sowieso besser.
    PHP-Code:
    $inhalt file_get_contents("data/".$dateiname);
    $meta = array($highlighter$author$title);
    $ergebnis array_merge($meta$inhalt);
    file_put_contents("data/".$dateiname$ergebnis); 
    Geändert von Nils_13 (20.07.09 um 22:55 Uhr)
     

  5. #5
    Registriert seit
    Mar 2004
    Beiträge
    1.853
    Blog-Einträge
    2
    file_get_contents() liefert kein Array.

    PHP-Code:
    $str file_get_contents("die.eine");
    $foo file_get_contents("die.andere");
    file_put_contents("neu.dat"$str "\n" $foo); 
    Oder mit fopen und a (append) arbeiten.
    kuddeldaddeldu bedankt sich. 
    Gebe keine Hilfe per PN, Mail, Instant Messenger etc.
    und keine Copy&Paste-Lösungen - ein bisschen selbst nachdenken sollte drin sein. Konstruktivismus 4tw!


    MfG, Zod

    __________________
    rpd Framework: Rapid Web-Engineering in PHP (Manual | Google Code)

  6. #6
    kuddeldaddeldu kuddeldaddeldu ist offline Mitglied Diamant
    Registriert seit
    Dec 2007
    Ort
    Bremen
    Beiträge
    3.418
    Hi,

    Zitat Zitat von saftmeister Beitrag anzeigen
    Wie kuddeldaddeldu schon schrieb, hilft die file_get_contents. Das liefert ein Array zurück.
    Quatsch. Das verwechselst Du mit file(). file_get_contents liefert den gesamten Dateiinhalt als String zurück.
    Also kann man den neuen Inhalt wie gehabt per Stringkonkatenation zusammenfügen und per file_put_contents zurückschreiben.

    LG
     
    Da es nötig zu werden scheint: Ich leiste hier keinen Support über PN. Stellt Rückfragen zu Euren Problemen bitte in Eurem Thread, dann können alle helfen.

  7. #7
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.127
    Ja, hab mich geirrt. Sorry für die falsche Aussage.
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  8. #8
    Nils_13 Nils_13 ist offline Mitglied Bronze
    Registriert seit
    Aug 2005
    Beiträge
    25
    Hm, das hätte ich merken müssen, habe den Link wohl nur übermüdet durchgelesen und das nicht gemerkt, aber ist ja auch kein Problem, kommt vor. Dann ist das Thema an der Stelle erledigt. Danke für Eure Hilfe! Der Hinweis mit file_get_contents war sehr hilfreich, er komprimiert den Code um ein vielfaches.
     

Ähnliche Themen

  1. Javascript zu PHP umschreiben
    Von Sven4972 im Forum PHP
    Antworten: 7
    Letzter Beitrag: 23.09.09, 21:40
  2. Umschreiben von .mov auf brauchbare datei
    Von dieni im Forum Videoschnitt, Videotechnik & -produktion
    Antworten: 1
    Letzter Beitrag: 22.09.07, 17:43
  3. PHP in cgi umschreiben
    Von dsaer im Forum CGI, Perl, Python, Ruby, Power Shell
    Antworten: 1
    Letzter Beitrag: 28.03.07, 08:46
  4. Shellscript umschreiben
    Von fanste im Forum Linux & Unix
    Antworten: 6
    Letzter Beitrag: 12.04.06, 19:24
  5. GB-Script umschreiben =(
    Von Scytheman im Forum PHP
    Antworten: 4
    Letzter Beitrag: 23.01.03, 21:45