str_replace-Problem

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

  • #31
    Nochmal: Was passiert, wenn du den Browser zwingst UTF-8 zu verwenden? Wird es dann richtig dargestellt?

    Kommentar


    • #32
      Zitat von h3ll Beitrag anzeigen
      Nochmal: Was passiert, wenn du den Browser zwingst UTF-8 zu verwenden? Wird es dann richtig dargestellt?
      Nein, habe ich doch geschrieben. Der Browser ist ohnehin so eingestellt gewesen.

      Kommentar


      • #33
        Warum verwendest du htmlentities()? Hau das raus.

        Kommentar


        • #34
          Also, ich hatte ja die Testdateien im Editor vor dem Speichern zu UTF-8 konvertiert. Wenn ich die jetzt aber in meinem uralten Weberslave öffne, der das noch nicht richtig versteht, dann erhalte ich diese Reihenfolge:

          HTML-Code:
          // Ausgabe: ‘Door’
          // Ausgabe: ‘Door’
          // Ausgabe: ?Door?
          Die erste Zeile sollte somit die Zeichen enthalten, nach denen Du suchen müsstest, um diese beiden zu bereinigen.

          Kommentar


          • #35
            Zitat von Melewo Beitrag anzeigen
            Die erste Zeile sollte somit die Zeichen enthalten, nach denen Du suchen müsstest, um diese beiden zu bereinigen.
            Er muss nix bereinigen. Wenn er jetzt anfängt einzelne Zeichen zu ersetzen, ist das ein schmutziger Workaround, der vielleicht in 90% der Fälle funktioniert, aber es behebt das eigentliche Problem nicht.

            Das wäre etwa so, als hättest du einen Taschenrechner, der bei 2+2 eine 5 als Ergebnis liefert. Jetzt könnte man natürlich hergehen und den Fehler "korrigieren", indem man 5 durch 4 ersetzt. "Funktioniert" auch im ersten Anschein nach einwandfrei. Bis jemand auf die Idee kommt 2+3 zu rechnen und plötzlich 4 als Ergebnis bekommt.

            Also nicht das Ergebnis der Verarbeitung korrigieren, sondern die eigentliche Verarbeitung! Das gilt auch bei Zeichensätzen.
            Zuletzt geändert von h3ll; 11.01.2013, 21:27.

            Kommentar


            • #36
              Zitat von h3ll Beitrag anzeigen
              Er muss nix bereinigen. Wenn er jetzt anfängt einzelne Zeichen zu ersetzen, ist das ein schmutziger Workaround, der vielleicht in 90% der Fälle funktioniert, aber es behebt das eigentliche Problem nicht.
              Ja, ist richtig. Kommt aber immer auf den Verwendungszweck an. Hatte mal eine kleine Suche gebastelt, die UTF-8 und ISO Dateien durchsuchen sollte, da funktionierte das mit diesen Glyphen ganz gut, nur genügten da halt die Entsprechungen für Umlaute.

              Hier ist noch eine passende Glyphen-Liste, nur ist die nicht komplett. Um den Buchstaben zu erhalten, müsste nach dem zweiten Buchstaben oder Glyphe (nennt man das so?) gesucht werden.

              http://bueltge.de/wp-content/downloa...odierungen.pdf
              Zuletzt geändert von Melewo; 11.01.2013, 21:42.

              Kommentar


              • #37
                Man hätte auch einfach nur den Zeichensatz beachten können. Aber hey, wozu einfach, wenns auch umständlich geht...

                Kommentar


                • #38
                  Zitat von Melewo Beitrag anzeigen
                  Hier ist noch eine passende Glyphen-Liste, nur ist die nicht komplett. Um den Buchstaben zu erhalten, müsste nach dem zweiten Buchstaben oder Glyphe (nennt man das so?) gesucht werden.

                  http://bueltge.de/wp-content/downloa...odierungen.pdf
                  Das ist gut gemeint, aber diese Liste ist voll daneben und verleitet dazu, alles nur noch schlimmer zu machen. Denn auch wenn 2-Byte-Sequenzen in unseren Breiten besonders häufig anzutreffen sind, darf man nicht vergessen, dass es auch 3- und 4-Byte-Sequenzen in UTF-8 gibt. Daneben gibt es aber auch noch die nicht-kanonischen Formen (z. B. Buchstabe und kombinierendes diakritisches Zeichen), die das ganze nur noch verwirrender machen.

                  Dein Satz müsste also richtig lauten: „Um die Glyphe zu erhalten, müsste nach dem zweiten (und ggf. dritten und vierten) Byte gesucht und eventuelle Kombinationsmarker berücksichtigt werden.“

                  Deswegen sollte man sich an das halten, was h3ll die ganze Zeit schon predigt.
                  [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                  Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                  Super, danke!
                  [/COLOR]

                  Kommentar


                  • #39
                    Zitat von AmicaNoctis Beitrag anzeigen
                    und verleitet dazu, alles nur noch schlimmer zu machen.
                    Ist doch vollkommen richtig, bestreite ich doch nicht. Bei mir klappt es doch auch. Habe mir heute nur mal die eine Artikelseite geholt, weil ich da nicht alles scrapen wollte, ohne User Agent erhalte ich gleich einen 500er und je nach dem was ich als Zeichensatz verwende, diese Ausgaben:
                    PHP-Code:
                    <?php ini_set("user_agent""Mozilla/5.0 ..."); ?>
                    <!DOCTYPE html>
                    <html>

                    <head>
                    <title>Thema</title>
                    <meta charset="utf-8">
                    </head>

                    <body>
                    <?php

                    $String 
                    file_get_contents("http://www. ... .com/door-mystery-erupts-...");
                    echo 
                    htmlspecialchars($StringENT_QUOTES);

                    // <title> POLITICS - ‘Door’ mystery ...

                    ?>
                    </body>
                    </html>
                    PHP-Code:
                    <?php ini_set("user_agent""Mozilla/5.0 ..."); ?>
                    <!DOCTYPE html>
                    <html>

                    <head>
                    <title>Thema</title>
                    <meta charset="windows-1252">
                    </head>

                    <body>
                    <?php

                    $String 
                    file_get_contents("http://www. ... .com/door-mystery-erupts-...");
                    echo 
                    htmlspecialchars($StringENT_QUOTES);

                    // <title> POLITICS - â€˜Door’ mystery ...

                    ?>
                    </body>
                    </html>
                    Und somit scheint da etwas beim Script mit dem verwendeten Zeichensatz nicht richtig zu stimmen oder wie auch immer. Schrieb ja nur, dass es Anwendungsfälle gibt, wo diese ganz brauchbar sind.

                    @ newbie1955 - Mit der rechtlichen Seite und mit dem neuen Leistungsschutzgesetz kennst Du Dich hoffentlich aus? Dass seit Jahren keine Seite mehr in den Serps rankt, die nur zu 100% aus übernommenen Pressemitteilungen oder sonstigen Duplicate Content besteht, weißt Du? Die Fehler im Quelltext würde ich bereinigen und X-UA-Compatible würde ich entfernen, da nur als Notbehelf geeignet. Die Ladezeit von der Seite ist zu lang.[FONT=&quot][/FONT]
                    Zuletzt geändert von Melewo; 12.01.2013, 09:37.

                    Kommentar


                    • #40
                      Zeichensatz beachten

                      Hallo, nett dass Ihr mir helfen wollt, aber ich habe das newbie in meinem Namen nicht ohne Grund gewählt, also versucht bitte, wenn möglich, verständlich zu bleiben.

                      @AmicaNoctis und h3ll
                      Man hätte auch einfach nur den Zeichensatz beachten können. Aber hey, wozu einfach, wenns auch umständlich geht...
                      Leider weiß ich nicht, was Ihr damit meint. Inwieweit beachten, wodurch ??? Ich habe doch jeweils auf Deine Detailvorschläge "Browser zu utf-8 zwingen" usw. geantwortet, ohne dass ich irgendwo gelesen hätte: Mache es so! Also, ich soll nicht mit str_replace einzelne Zeichen ersetzen, habe ich kapiert. Ich habe im header - vor allen Ausgaben - per php utf-8 gesetzt, also WO oder wodurch habe ich den Zeichensatz nicht beachtet?

                      @Melewo. Ja, die rechtliche Seite wird beachtet. Diese Seite soll - wenn sie je funktioniert - sowieso vor allem intern verwendet werden und wird ggf mit htaccess geschützt.
                      Zuletzt geändert von newbie1955; 12.01.2013, 15:23.

                      Kommentar


                      • #41
                        Hast du jetzt das htmlentities() schon raus gegeben?

                        Kommentar


                        • #42
                          Zitat von newbie1955 Beitrag anzeigen
                          Leider weiß ich nicht, was Ihr damit meint. Inwieweit beachten, wodurch ?
                          Die Antwort hatte ich auf meine Antwort bezogen, weil ich es halt auch so handhabe, wenn ein Script UTF-8 und ISO Dateien in einem Abwasch durchsuchen soll. In der Funktion habe ich aber nur die Glyphen und Entities für Umlaute aufgenommen:

                          RegEx: Mit regulären Ausdrücken im Quellcode von Dateien suchen

                          Hat jetzt nicht unbedingt etwas mit dem Thema zu tun, doch zum Beispiel verstehe ich nicht, zu was dieser Refresh gut sein soll. Wenn Du da schon aus einem mir unerklärlichen Grund einen verwendest, zwischen http: und Domain kommen immer noch zwei Schrägstriche:
                          HTML-Code:
                          <meta http-equiv="refresh" content="600; URL=http:www.nachrichtentisch.de/austest.php">
                          Doch wozu, damit die Seite sich aktualisieren soll? Die hat doch so schon eine zu lange Ladezeit. Besser wäre es da, Du würdest die Ergebnisse stündlich oder mehrmals täglich cachen und für den Aufbau der Seiten dann nur die gecachten Daten verwenden.

                          Daraus lässt sich 0 machen, da es sich ohnehin oft nur um Wiederholungen handelt, wie fehlende Anführungszeichen:
                          Result: 460 Fehler / 37 Warnungen
                          Und wenn Script und HTML aufgeräumt ist, vielleicht lassen sich dann die verbleibenden Fehler besser eingrenzen oder verschwinden mit der Aufräumaktion. Im Augenblick fallen mir keine fehlerhaften Zeichen auf.

                          Kommentar


                          • #43
                            Zitat von h3ll Beitrag anzeigen
                            Hast du jetzt das htmlentities() schon raus gegeben?
                            ja. Momentan sehe ich auch nix Störendes, aber auch keine spezifischen
                            türkischen Sonderzeichen, die im aktuellen Text gerade vorkämen.

                            War es denn das, was Du meintest mit "einfach nur den Zeichensatz beachten"???

                            Kommentar


                            • #44
                              Zitat von newbie1955 Beitrag anzeigen
                              ja. Momentan sehe ich auch nix Störendes, aber auch keine spezifischen
                              türkischen Sonderzeichen, die im aktuellen Text gerade vorkämen.

                              War es denn das, was Du meintest mit "einfach nur den Zeichensatz beachten"???
                              Nein. htmlentities() ist in 99,9999% der Fälle unnötig und richtet falsch angewandt mehr Schaden an, als es überhaupt bringt. Bei dir wars vermutlich, dass du die Kodierung mit 'utf-8' statt mit 'UTF-8' angegeben hast. Aber wie gesagt, das ist so oder so hinfällig, weil die Funktion hier wertlos ist.

                              Allerdings solltest du immer htmlspecialchars() anwenden, wenn du auf deiner HTML-Seite Werte ausgeben möchtest, da hiermit HTML-Steuerzeichen entschärft werden. Einziger Ausnahmefall: Du möchtest bewusst HTML-Code ausgeben.

                              Kommentar


                              • #45
                                @Melewo

                                Für meine Arbeit sollte sich die Meldungsübersicht in kürzeren Zeiträumen aktualisieren, also spätestens alle fünf Minuten. Das mit dem doppelten Slash ist natürlich ein Fehler, den hatte ich jetzt schon wieder entfernt.

                                Woher kommen die vielen Fehler bei Dir? Bei mir kommen:
                                Code:
                                Result:                 4 Errors, 2 warning(s)
                                Und mit deren Behebung tue ich mich schwer, da ich sie nicht verstehe:

                                Code:
                                [LIST=1][*]     [IMG]http://validator.w3.org/images/info_icons/error.png[/IMG]          [I]Line [URL="http://validator.w3.org/check#line-7"]7[/URL],         Column 97[/I]:     Bad value [URL]http://www.w3.org/2000/xhtml[/URL] for the attribute xmlns (only [URL="http://www.w3.org/1999/xhtml"]XHTML namespace[/URL] permitted here).     …l lang="de" class="no-js" xmlns="http://www.w3.org/2000/xhtml"[B]>[/B]<!--<![endif]-->                [URL="http://validator.w3.org/feedback.html?uri=;errmsg_id=html5#errormsg"]✉[/URL][*]     [IMG]http://validator.w3.org/images/info_icons/warning.png[/IMG]          [I]Line [URL="http://validator.w3.org/check#line-7"]7[/URL],         Column 97[/I]:     Attribute xmlns is not serializable as XML 1.0.     …l lang="de" class="no-js" xmlns="http://www.w3.org/2000/xhtml"[B]>[/B]<!--<![endif]-->                [URL="http://validator.w3.org/feedback.html?uri=;errmsg_id=html5#errormsg"]✉[/URL][*]     [IMG]http://validator.w3.org/images/info_icons/error.png[/IMG]          [I]Line [URL="http://validator.w3.org/check#line-12"]12[/URL],         Column 53[/I]:     Bad value X-UA-Compatible for attribute http-equiv on element meta.      <meta http-equiv="X-UA-Compatible" content="IE=8" /[B]>[/B]                [URL="http://validator.w3.org/feedback.html?uri=;errmsg_id=html5#errormsg"]✉[/URL][*]     [IMG]http://validator.w3.org/images/info_icons/error.png[/IMG]          [I]Line [URL="http://validator.w3.org/check#line-17"]17[/URL],         Column 68[/I]:     Changing character encoding utf-8 and reparsing.     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/[B]>[/B]                [URL="http://validator.w3.org/feedback.html?uri=;errmsg_id=html5#errormsg"]✉[/URL][*]     [IMG]http://validator.w3.org/images/info_icons/error.png[/IMG]          [I]Line [URL="http://validator.w3.org/check#line-17"]17[/URL],         Column 68[/I]:     Changing encoding at this point would need non-streamable behavior.     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/[B]>[/B]                [URL="http://validator.w3.org/feedback.html?uri=;errmsg_id=html5#errormsg"]✉[/URL][/LIST]
                                Die lange Ladezeit verstehe ich auch nicht recht, ich habe ja noch andere Unterseiten, die schneller geladen werden. Allerdings kostet das Abrufen diverser feeds wohl immer recht viel Zeit. Ich wollte hier schon mal in einem anderen Thread fragen, ob jemand Ideen fürs schnellere Laden hat. (Zum Beispiel die Seite in zwei Teile aufteilen, die nacheinander geladen werden?)

                                Wenn ich X-UA-Compatible entferne, kriege ich hier mit der IE-Darstellung Probleme. Wir haben hier auf der Arbeit noch grottig alte IEs im Einsatz, da zerschießt es mir die Navi-Leiste.

                                Gruß und Dank
                                newbie1955
                                Zuletzt geändert von newbie1955; 12.01.2013, 17:41.

                                Kommentar

                                Lädt...
                                X