htmlentities() erzeugt fehlerhafte "1"

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • htmlentities() erzeugt fehlerhafte "1"

    Hi

    Ganz liebe Grüße von einem verzweifelten PHP Newbie,

    Ich bin seid 2 MOnaten dabei PHP auf die Schliche zu kommen um es für mich endgültig abzurunden. HTML, JS, AS und CSS stellen für mich kein Problem mehr dar, aber diese gelten ja auch nicht als Programmiersprachen, somit ist PHP schon Neuland. Templates und if Schleifen oder Formular Systeme sind alle schon geübt und im Einsatz. Nur habe ich jetzt ein Problem wo ich den Wald vor lauter Bäumen nicht seh, oder das Problem eventl. garnicht bei PHP liegt ?! Das wollte ich mit eurer Hilfe prüfen:

    <?php

    $info = ("./info.txt");

    //ASCII Text aus Simpletext Mac

    echo htmlentities($info, ENT_QUOTES, ISO-8859-1);

    //konvertiert Sonderzeichen
    //sofern diese im Textfile richtig ausgewiesen sind (Filetype, //Creatortype oder Texttype)

    ?>

    Ergebnis:

    Der Inhalt von info.txt wird richtig konvertiert (ACHTUNG: Bei BBedit kann sich ein Save-Fehler einschleichen. Am sichersten fährt man wenn Text mit Sonderzeichen in Simpletext geschrieben wird.), Aber am Ende der Ausgabe erscheint eine Eins. Diese Eins ist nach ausgiebiger Prüfung nicht durch unsichtbare Zeichen im info.txt erzeugt worden sondern durch das htmlentities() scriptfile.

    z.B.: >Hallöle> wird als >Hallöle>1 ausgegeben. Woher kommt die Eins?? Ichbin ratlos. Bitte macht Vorschläge, mögen sie auch noch so unwahrscheinlich sein. Der Fehler kann überall liegen, vielleicht soger beim Server selbst, oder??

    Liebe Grüsse, DigiDogX
    Der Kurzschluss der Wissenschaft:
    Die Wirklichkeit ist nichts als die Übereinstimmung ihrer subjektiven Zeugen. Die Wahrheit ist auch nur ein anderer Begriff für den Versuch etwas relatives als definitiv zu behaupten!

  • #2
    evt solltest Du das ISO-8859-1 mal in quotes setzen
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      oh mann, danke dass mal jemand ne idee einwirft
      hab ich direkt gleich mal ausprobiert, - leider fehlanzeige, immernoch die 1.

      Irgendwie sehr merkwürdig. hab auch schon die variablen namen geändert und alles weggeschmissen und neu geschrieben, in verschiedenen Text Editoren- Die Eins ist immer da. Wollte statt der variabe §info den text auch direkt ins script einbinden, aber das geht nicht, weil es eine php datei ist und die darf keine Sonderzeichen enthalten. Würde nur kauderwelksch rauskommen.

      Trotzdem aber Lieben Dank, noch ein paar andere ideen????
      Raus damit, ich will sie alle!!!!!


      Liebe Grüße
      Der Kurzschluss der Wissenschaft:
      Die Wirklichkeit ist nichts als die Übereinstimmung ihrer subjektiven Zeugen. Die Wahrheit ist auch nur ein anderer Begriff für den Versuch etwas relatives als definitiv zu behaupten!

      Kommentar


      • #4
        Also das ISO muss auf jeden fall in quotes
        was willst Du eigentlich mit dieser Zeile bewirken:
        $info = ("./info.txt");
        Beantworte nie Threads mit mehr als 15 followups...
        Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

        Kommentar


        • #5
          ähm,

          na das ein text aus einer externen datei in eine variable geladen wird, damit ich diese dann als zu behandelnde variable der funktion echo htmlentities() zu ordnen kann.
          Der Kurzschluss der Wissenschaft:
          Die Wirklichkeit ist nichts als die Übereinstimmung ihrer subjektiven Zeugen. Die Wahrheit ist auch nur ein anderer Begriff für den Versuch etwas relatives als definitiv zu behaupten!

          Kommentar


          • #6
            also damit weist Du der variablen aber nicht den Inhalt der Datei zu sondern nur den dateinamen...
            wenn Du den Inhalt willst musst Du fopen, fread, fclose oder file benutzen
            Beantworte nie Threads mit mehr als 15 followups...
            Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

            Kommentar


            • #7
              aaaaah Ich glaub, ich ahne meinen Denkfehler

              include() ist ja für das Einbetten von Dateien und nicht für das Zuordnen zu Variablen geeignet. Oh Gott klar - sorry!

              Gut das kann ein wenig dauern, denn fopen() ist noch frisch für mich. Ich versuchs mal und poste es hier, ok? Dank dir nochmal .....

              bis später....
              Zuletzt geändert von digidog; 13.09.2003, 18:38.
              Der Kurzschluss der Wissenschaft:
              Die Wirklichkeit ist nichts als die Übereinstimmung ihrer subjektiven Zeugen. Die Wahrheit ist auch nur ein anderer Begriff für den Versuch etwas relatives als definitiv zu behaupten!

              Kommentar


              • #8
                <?php
                $path = fopen("info.txt", r);
                $info = fgets($path, 200);
                echo htmlentities($info, ENT_QUOTES, ISO-8859-1);
                fclose($path);
                ?>

                so funktioniert es. nun ist noch die Frage wie ich das als filter für viele Dateien benutzen kann ohne für jedes txt File das skript zu kopieren.

                Aber das ist ein neues thread.... Vielen Dank nochmal für Rat und Tat
                Der Kurzschluss der Wissenschaft:
                Die Wirklichkeit ist nichts als die Übereinstimmung ihrer subjektiven Zeugen. Die Wahrheit ist auch nur ein anderer Begriff für den Versuch etwas relatives als definitiv zu behaupten!

                Kommentar


                • #9
                  $file = $_GET['file'];
                  $path = fopen($file, r);

                  [für das brauch man keine PHP-Tags *ggg*]

                  Jetzt rufst du das Script einfach so auf:
                  scriptname.php?file=dein-textfile.txt

                  Und schon funktioniert das ganze super...
                  Welch triste Epoche, in der es leichter ist, ein Atom zu zertrümmern als ein Vorurteil!
                  (Albert Einstein)

                  Kommentar


                  • #10
                    hey samson, dank dir du hilfst einem Newbie echt auf die Sprünge.
                    kann ich dich noch etwas fragen?? Das ganze ist für ein News Template gedacht und ich wollte in den Flash News den angerissenen text mit dem Button "...mehr" dahinter der auf den ganzen Text linkt. Und das als Template für alle Artiklel. quasi so:

                    blablablablabla
                    blablablablabla
                    blablablabl...mehr

                    blablablablabla
                    blablablablabla
                    blablablabl...mehr


                    Desegen hab ich auch fgets() zum abschneiden des TExtes benutzt. Das mit
                    $file = $_GET['file'];
                    $path = fopen($file, r);

                    macht Sinn aber wie generiere ich das ...mehr über PHP?? quasi als link??
                    Kannst du mir da nochmal einen Newbie-Denkanstoß geben???
                    Der Kurzschluss der Wissenschaft:
                    Die Wirklichkeit ist nichts als die Übereinstimmung ihrer subjektiven Zeugen. Die Wahrheit ist auch nur ein anderer Begriff für den Versuch etwas relatives als definitiv zu behaupten!

                    Kommentar


                    • #11
                      Da hilft dir die Funktion substr() (siehe Manual).

                      Aber Achtung mit dem $file = $_GET['file']; du solltest eine Prüfung einbaun (z.b. sollte der Dateiname immer mit txt Enden und nicht länger als 20 Zeichen sein). Somit überprüfst du erst ein wenig bevor du wahllos eine Datei aufrufst. Sonst könnte ja jemand einfach ne php Datei anzeigen lassen und deinen Quelltext klauen.

                      Dateiendungen kannst du einfach herausbekommen:
                      Erst schaun wie lang der String is dann einfach die letzten drei Zeichen auswählen (endung =länge - 3 und dann einfach alles ab endung anzeigen lassen) ab dem und vergleichen. Is ne gute Übung am Anfang. *ggg*
                      Welch triste Epoche, in der es leichter ist, ein Atom zu zertrümmern als ein Vorurteil!
                      (Albert Einstein)

                      Kommentar


                      • #12
                        hm, substr() kenn ich. Damit hab ich schon gearbeitet aber das mit $_GET gibt mir Rätsle auf. Ich hab es eins zu eins so probiert und es funktioniert nicht.

                        FileA, news.php

                        <html>.....
                        PHP-Code:
                        include("umlaut.php?file=info.txt"); 
                        .....</html>

                        FileB, umlaut.php

                        PHP-Code:
                        $file $_GET['file'];
                        $path fopen($filer);
                        $info fgets($path200);
                        echo 
                        htmlentities($infoENT_QUOTESISO-8859-1);
                        fclose($path);
                        //hier fehlt noch der link zum Volltext  über 200 Bytes hinaus 
                        FileC, imfo.txt

                        Text mit Sonderzeichen.....



                        Bin jetzt völlig verwirrt da ich inner switch weiche doch auch kein $_GET brauche....
                        Der Kurzschluss der Wissenschaft:
                        Die Wirklichkeit ist nichts als die Übereinstimmung ihrer subjektiven Zeugen. Die Wahrheit ist auch nur ein anderer Begriff für den Versuch etwas relatives als definitiv zu behaupten!

                        Kommentar


                        • #13
                          include("umlaut.php?file=info.txt");
                          ist falsch. Du kannst keine Variablen per include übergeben...
                          Du musst in umlaut.php ne funktion machen die du dann aufrust, dann gehts.
                          Welch triste Epoche, in der es leichter ist, ein Atom zu zertrümmern als ein Vorurteil!
                          (Albert Einstein)

                          Kommentar

                          Lädt...
                          X