cr: datei auslesen

Hey jungs,

danke für den tipp von vorhin,

jetzt leider noch ein problem, bei dem ich keine lösung finde:

auslesen einer txt datei mit file()

ausgabe wie folgt:

$daten = file(bla.txt);

echo "<form ...>";
echo "<input type="text" value="$daten">";

usw...

komt ja nur das wort array raus, wie kann ich den befehl geben, dass alles ausgegeben wird was in der txt steht?

mit fopen und fgets?

danke und grüße

cr

  1. Hallo cr,

    auslesen einer txt datei mit file()

    $daten = file(bla.txt);

    Ich hoffe, du hast Anfuehrungszeichen um bla.txt - das waere naemlich sonst der naechste Fehler, den eine Datei 'blatxt' hast du wahrscheinlich nicht.

    echo "<form ...>";
    echo "<input type="text" value="$daten">";

    komt ja nur das wort array raus, wie kann ich den befehl geben, dass alles ausgegeben wird was in der txt steht?

    Natuerlich: $daten ist ein Array, denn "file -- Reads entire file into an array". Es gibt zum Beispiel file_get_contents, das liest die ganze Datei als String ein. Fuer deinen Fall wuerde sogar (angenommen du benutzt $daten nicht weiter unten nochmal) readfile() reichen, das gibt die Daten direkt wieder aus.
    Eigentlich sollte die Datei eh nur aus einer Zeile bestehen, wenn du ihren Inhalt in ein <input> schreibst.

    Viele Grüße aus Freiburg,
    Marian

    --
    Microsoft broke Volkswagen's world record: Volkswagen made only 22 million bugs!
    <!--[if IE]><meta http-equiv="refresh" content="0; URL=http://www.getfirefox.com"><[endif]-->
    1. Ich hoffe, du hast Anfuehrungszeichen um bla.txt - das waere naemlich sonst der naechste Fehler, den eine Datei 'blatxt' hast du wahrscheinlich nicht.

      das habe ich in meiner php datei richtig, beim tippen vergessen :-)

      readfile() ist geanu das, was ich gesucht habe, ich verwende die daten zwar noch einmal, aber ersteinmal soll php nur auslesen, was danach passiert ist ein anderer fall, denn meistens passiert nix ;-)

      danke und schönes we

      cr

    2. hallo jungs und mädels :-)

      mir ist da grad noch etwas aufgefallen:

      Problem ist, wenn ich das ganze mit <textarea> verwirkliche und dann beim auslesen zufällig auch der tag <textarea> od. </textarea> vorkomt, wird die seite fehlerhaft ausgeführt.

      wie kann ich den html code nur anzeigen lassen? wichtig: es muss html code bleiben.

      danke cr

      1. echo $begrüßung;

        wie kann ich den html code nur anzeigen lassen? wichtig: es muss html code bleiben.

        Allgemein gesagt: Wenn du die Wirkung von Zeichen mit besonderer Bedeutung nicht haben möchtest, musst du diese Zeichen gemäß den Vorschriften des Ausgabemediums maskieren.

        In deinem Fall musst du die in deinem Code enthaltenen HTML-eigenen Zeichen (<, > und &) maskieren. PHP kennt dazu die Funktion htmlspecialchars().

        echo "$verabschiedung $name";

        1. Hallo cr,

          Allgemein gesagt: Wenn du die Wirkung von Zeichen mit besonderer Bedeutung nicht haben möchtest, musst du diese Zeichen gemäß den Vorschriften des Ausgabemediums maskieren.

          Das solltest du _immer_ machen, wenn du etwas, das vom Benutzer kommt, ausgibst.

          Viele Grüße aus Freiburg,
          Marian

          --
          Microsoft broke Volkswagen's world record: Volkswagen made only 22 million bugs!
          <!--[if IE]><meta http-equiv="refresh" content="0; URL=http://www.getfirefox.com"><[endif]-->
          1. echo $begrüßung;

            Allgemein gesagt: Wenn du die Wirkung von Zeichen mit besonderer Bedeutung nicht haben möchtest, musst du diese Zeichen gemäß den Vorschriften des Ausgabemediums maskieren.

            Das solltest du _immer_ machen, wenn du etwas, das vom Benutzer kommt, ausgibst.

            Wieso möchtest du das auf Benutzereingaben beschränken? Benutzereingaben gehören außerdem zum Thema Dateneingabe. Da müssen die Daten gegebenenfalls erst einmal dekodiert werden, so dass nun Rohdaten vorliegen, mit denen man im weiteren Verlauf arbeiten kann. Diese Rohdaten sollten einer Plausibilitätsprüfung unterzogen werden, bevor sie zum Schritt Datenverarbeitung gelangen. Anschließend geht es zur Datenausgabe. Und da müssen die verarbeiteten Daten gemäß den Kodierungsregeln des Kontextes, in die sie gebracht werden sollen, behandelt werden.

            Diese Trennung der Schritte Dateneingabe, -verarbeitung und -ausgabe sollte man schon im Kleinen üben, damit man sie dann für größere Projekte beherrscht.

            echo "$verabschiedung $name";

            1. guten morgen,

              die eingaben erfolgen nicht durch benutzer, sondern nur durch mich. alos muss man nicht vor irgendjemanden schützen.

              also sinn und ziel ist es, dass ich da etwas eintippe, und das 1:1 so gespeichert wird. also wenn ich <br> oder <input type="text"> eintippe, dann soll in dieser txt datei auch <br> oder <input type="text"> stehen...

              wie mach ich das dann?

              cr

              1. Hallo cr,

                die eingaben erfolgen nicht durch benutzer, sondern nur durch mich. alos muss man nicht vor irgendjemanden schützen.

                also sinn und ziel ist es, dass ich da etwas eintippe, und das 1:1 so gespeichert wird. also wenn ich <br> oder <input type="text"> eintippe, dann soll in dieser txt datei auch <br> oder <input type="text"> stehen...

                In die Textdatei kannst du es unkodiert schreiben, für die Ausgabe in HTML musst du <>"& kodieren, auch in einer textarea. Auch wenn es im Browser gar keinen Fehler gibt. Und auch wenn es von dir kommt.

                Viele Grüße aus Freiburg,
                Marian

                --
                Microsoft broke Volkswagen's world record: Volkswagen made only 22 million bugs!
                <!--[if IE]><meta http-equiv="refresh" content="0; URL=http://www.getfirefox.com"><[endif]-->
                1. Hallo Marian,

                  wie wäre es denn wenn ich das dann wie folgt mache:

                  ich gebe den text wie folgt in das formular ein:

                  [br]

                  beim auslesen ersetze ich mit ereg_replace(Suche,Ersetze,betroffene Variable) [br] zu <br> also nur [ zu <.

                  das müsste doch die schnellste umsetzbare variante sein.

                  damit habe ich html code bei der ausgabe und der browser interpretiert das, aber im formulat ist nur ein "wort"

                  grüße cr

                  1. Hallo cr,

                    ich gebe den text wie folgt in das formular ein:
                    [br]

                    Warum denn? Gib <br> ein, schreib <br> in die Datei (dann kriegst du auch <br> raus, wenn du die Datei sonstwie öffnest), schreib &lt;br&gt; ins HTML, der Browser zeigt dir <br> an. Wo ist da das Problem?

                    beim auslesen ersetze ich mit ereg_replace(Suche,Ersetze,betroffene Variable) [br] zu <br> also nur [ zu <.

                    ereg_replace ist „depreceted“. Nimm preg_replace.

                    Viele Grüße aus Freiburg,
                    Marian

                    --
                    Microsoft broke Volkswagen's world record: Volkswagen made only 22 million bugs!
                    <!--[if IE]><meta http-equiv="refresh" content="0; URL=http://www.getfirefox.com"><[endif]-->
                    1. also ich habe nun folgende lösung:

                      ich schreibe alle daten so in die txt wie man sie eingibt, also auch <br> mit den klammern <>.

                      ich habe lediglich das wort textarea verboten mit stripos, damit niemand ausversehen </textarea> eingibt. (sonst macht der browser ja voll den unsinn interpretiert das)

                      funktioniert super.

                      danke für die hilfe.

                      grüße cr

                      1. hi,

                        was mir noch einfällt, ich suche schon seit längerem auch nach einer funktion die 1 wert mit einer zeichenkette vergleicht und beim finden (egal wie oft) 1mal true weider gibt.

                        also zeichenkette ist ab2ab3ab5ab2

                        gesucht wird ab2

                        ergebnis soll nur 1mal true sein oder 1mal false wenn er sie nicht findet

                        danke und grüße cr

                        1. Hallo cr.

                          also zeichenkette ist ab2ab3ab5ab2

                          gesucht wird ab2

                          ergebnis soll nur 1mal true sein oder 1mal false wenn er sie nicht findet

                          Das leistet str(i)pos ja bereits. Wurde nichts gefunden, gibt es false zurück, ansonsten irgend einen Wert >= 0, woraus du dir true schlussfolgern kannst.

                          Einen schönen Samstag noch.

                          Gruß, Mathias

                          --
                          sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
                          debian/rules
                      2. Hallo cr,

                        ich habe lediglich das wort textarea verboten mit stripos, damit niemand ausversehen </textarea> eingibt. (sonst macht der browser ja voll den unsinn interpretiert das)

                        Und wenn du mal wirklich </textarea> eingeben willst?

                        funktioniert super.

                        Ist aber weder valide noch praktisch.

                        Nochmal: was hast du dagegen, den Text mit htmlspecialchars() zu kodieren?

                        Viele Grüße aus Freiburg,
                        Marian

                        --
                        Microsoft broke Volkswagen's world record: Volkswagen made only 22 million bugs!
                        <!--[if IE]><meta http-equiv="refresh" content="0; URL=http://www.getfirefox.com"><[endif]-->
  2. hallo,

    Hey jungs

    Es gibt hier auch einige sehr fachkundige und kompetente Mädels. Überdenke bitte deinen Kommunikationsstil.

    danke für den tipp von vorhin,
    jetzt leider noch ein problem, bei dem ich keine lösung finde:

    Du lieferst ein köassisches Beispiel für ein Nachfolgeposting. Deine Nachfrage hättest du besser in deinem bereits existierenden Thread stellen sollen.

    Grüße aus Berlin

    Christoph S.

    --
    Visitenkarte
    ss:| zu:) ls:& fo:) va:) sh:| rl:|