Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Utf-8 preg_replace mal gehts mal nicht

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Utf-8 preg_replace mal gehts mal nicht

    Lol, stehe gegen Feierabend vor nem Problem .

    Beim ersten Code wird das Sonderzeichen Ü ersetzt, beim 2ten aber nicht. Wo liegt den da der Unterschied? Die Seite wird doch nur geholt und müsste doch das gleiche Verfahren sein.

    Code:

    PHP-Code:
    <?php

    $content 
    file_get_contents('http://weinschreiber.de/index.php/impressum/');

    $content preg_replace('@Ü@sui','ae'$content);



    ?>
    PHP-Code:
    <?php

    $content 
    file_get_contents('http://clickeffect.de');

    $content preg_replace('@Ü@sui','ae'$content);



    ?>


  • #2
    Nein, dein zweiter Code „holt“ nicht die Seite, zumindest nicht die, die du wohl beabsichtigst - sondern der Request wird vom Server nur mit einem Redirect-Header beantwortet (plus kurzes Dokument, das diesen Umstand beschreibt), und file_get_contents hat überhaupt keine Lust, diesem ohne weiteres automatisch zu folgen.

    Vermutlich meinst du eigentlich die Adresse http://clickeffect.de/

    Kommentar


    • #3
      em ich habe bei beiden inhalt, sehe den inhalt in der content variabel, beim debbugen. doch leider ersetzt er die sonderzeichen bei den gleichen einstellungen nicht für den obigen code und weis leider nicht wieso.

      Kommentar


      • #4
        Dann hat Website A eine andere Kodierung als Website B.
        In diesem Fall hat aso Website A die gleiche Kodierung wie dein Script, Website B aber eine andere. Deshalb kann ein Ü in Website B von deinem Script nicht als Ü erkannt werden.
        sigpic

        Kommentar


        • #5
          ok vielen dank frank, damit kann ich etwas anfangen. wie erkennt php bitte den charset? ist der nicht immer gleich meines scriptes? wird das anhand des responde -> request verfahren automatisch gesetzt? kann man das irgendwie zwischen schalten, das man inhalt immer in einem zeichensatz bekomme

          Kommentar


          • #6
            PHP: mb_detect_encoding - Manual
            PHP: iconv - Manual

            Fuer dein Vorhaben reicht auch str_replace.
            "Mein Name ist Lohse, ich kaufe hier ein."

            Kommentar


            • #7
              Hi, danke für die Hilfe, bin dennoch am verzweifeln. Es will einfach nicht in meinen Schädel rein, wieso es nicht fuktioniert.

              Folgendes:

              PHP-Code:
              $content file_get_contents('http://weinschreiber.de');

              echo 
              mb_detect_encoding($content);


              echo 
              $content preg_replace('@Ü@sui','ae'$content); 
              Habe als Beispiel die Seiten clickeffect.de und weinschreiber.de, beide sind nach der Aussage von "mb_detect_encoding" UTF-8 codiert, also sollten doch beide im preg_relace die gleichen Vorraussetzungen haben für das Ändern.

              Leider aber ersetzt er mir mir weinschreiber.de zum Teufel nicht die Sonderzeichen. Will es nur testen, aber verstehe nicht wieso er es nicht macht.

              Kommentar


              • #8
                Hi, also ich habe es folgendermaßen geschafft:
                PHP-Code:
                $content file_get_contents('http://weinschreiber.de');

                echo 
                $charset mb_detect_encoding($content);
                $content iconv($charset'UTF-8'$content);

                echo 
                $content preg_replace('@Ü@sui','ae'$content); 
                Meine Frage:

                Wieso muss ich den Charset mit Iconv nochmal extra setzen? mb_detect_encoding sagt doch schon es ist utf-8. ohne inconv funzt es nicht...

                Kommentar


                • #9
                  Zitat von omex Beitrag anzeigen
                  Wieso muss ich den Charset mit Iconv nochmal extra setzen? mb_detect_encoding sagt doch schon es ist utf-8. ohne inconv funzt es nicht...
                  Ich vemute mal, dass sich die Website als UTF8 ausgibt, obwohl Sie entweder gar nicht UTF-8 ist oder an irgendeiner Stelle nicht UTF8 ist.

                  Da es einen Bug in [MAN]mb_detect_encoding[/MAN] gibt, kann es durchaus sein, dass UTF8 ausgegeben wird, obwohl es gar nicht stimmt.

                  Mit deinem iconv erzwingst du in jedem Fall einfach UTF8, womit das Ersetzen klappt.

                  [Das waren jetzt aber alles nur Annahmen ^^]
                  sigpic

                  Kommentar

                  Lädt...
                  X