Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Umlaute ersetzen preg_replace - funktioniert nicht

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Umlaute ersetzen preg_replace - funktioniert nicht

    Hallo Leute!

    Ich habe eine ganz simple Frage, wieso funktioniert das nicht?

    PHP-Code:
    $umlaute = array("/ä/","/ö/","/ü/","/Ä/","/Ö/","/Ü/","/ß/");
    $replace = array("ae","oe","ue","Ae","Oe","Ue","ss");
    $street_new preg_replace($umlaute$replace$street[$counter]); 
    Es sollte die Umlaute ersetzen. Das interessante ist, dass es in einem anderem Script funktioniert.

    $street[$counter] ist "straße".
    $street_new sollte also "strasse" sein, jedoch passiert einfach gar nichts.

    Ich verstehe nicht warum..vorallem, da es in dem anderem Script geht.

    $street[$counter] ist ein Wert aus einem POST Formular, falls das weiterhilft.
    Es ist auch noch nicht codiert per utf8 etc.

    Gruß

    robat


  • #2
    Zitat von robat Beitrag anzeigen
    Ich habe eine ganz simple Frage, wieso funktioniert das nicht?
    Vermutlich, weil die Zeichenkodierung von Script und Daten nicht übereinstimmt.

    Es ist auch noch nicht codiert per utf8 etc.
    Daten liegen immer in irgendeiner Zeichenkodierung vor.

    Kommentar


    • #3
      VL. könnte das weiterhelfen:
      Bindet ein Script das UTF-8 codiert ist mit include/require ein anderes ein das etwas anderes als UTF-8 codiert ist, funktioniert das was du willst nicht, da bei der übertragung das Script nicht weiß, welche Codierung es bevorzugen soll. Am besten du speicherst es UTF-8 codiert ab und gibst im HTML-Header an dass die Seite UTF-8 codiert ist!
      /Edit:
      Versuche 'mal mit str_replace zu ersetzen!
      webmasterlounge
      Die deutsche Webmaster-Community

      Kommentar


      • #4
        Ich danke euch beiden schonmal für eure Antworten.

        Also ich probiere es mal mit der Codierung, obwohl ich da ein bisschen durcheinander komme

        Mit str_replace funktioniert es leider auch nicht.

        Kommentar


        • #5
          Hm..wenn ich sage, dass die Seite UTF-8 codiert ist, dann funktioniert dieses Script, dafür das andere nicht mehr.

          Wieso senden die Formulare in unterschiedlichen Codierungen?

          Kommentar


          • #6
            Zitat von robat Beitrag anzeigen
            Hm..wenn ich sage, dass die Seite UTF-8 codiert ist, dann funktioniert dieses Script, dafür das andere nicht mehr.
            Am einfachsten machst du es dir, wenn du überall konsequent UTF-8 verwendest.
            (Dabei müssen allerdings PHPs immer noch vorhandene Unzulänglichkeiten diesbezüglich beachtet werden.)

            Wieso senden die Formulare in unterschiedlichen Codierungen?
            IdR. senden Browser Formulardaten in der Kodierung, in der das das Formular enthaltende HTML-Dokument vorliegt.

            Kommentar


            • #7
              Eigentlich nutze ich überall UTF-8.

              Und die Struktur arbeitet per include.

              Also:
              PHP-Code:
              <html>
              <head>
                   <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
              </head>
              <body>
                   <div id="inhalt">
                   <?php
                        
              if($_GET['content'] == "seite") include('seite.php');
                        
              etc.
                        
              etc.
                   
              ?>
                   </div>
              </body>
              </html>
              Also ist überall ja UTF-8 eingestellt..

              Kommentar


              • #8
                PHP-Code:
                <meta http-equiv="Content-Type" content="text/html;charset=utf-8"
                Nur dadurch, dass Du das in eine datei schreibst, benutzt die Datei noch lange nicht utf-8
                Viele editoren unter Windows speichern die dateien standard als "Windows-ASCII" (mir fällt gerade die genaue bezeichnung nicht ein)
                Des weiteren gibt es noch den http-header wo dies noch ein weiteres mal seperat eingestellt werden kann. sieh dir dazu mal header() genauer an.

                Kommentar


                • #9
                  Zitat von robat Beitrag anzeigen
                  Also ist überall ja UTF-8 eingestellt..
                  Nix also.

                  Eine Angabe zur Zeichenkodierung im HTTP-Response-Header Content-Type hat höhere Priorität, als eine per Meta-Element gemachte.

                  Und deine Scriptdateien musst du natürlich auch in UTF-8 speichern.

                  Kommentar


                  • #10
                    Wieso UTF-8 wenn es ihn um deutsche Umlaute geht?
                    Ansonsten:
                    PHP: mb_detect_encoding - Manual

                    Wo kommen die Daten her? Aus der DB? Per Get Post?

                    Kommentar


                    • #11
                      Klicke in deinem Editor einfach mal auf Speichern unter ... und stell dort die Codierung auf UTF-8. Wenn du da nichts einstellen kannst, dann müsstest du das in den Einstellungen können.
                      webmasterlounge
                      Die deutsche Webmaster-Community

                      Kommentar


                      • #12
                        Zitat von Yoshi- Beitrag anzeigen
                        Wieso UTF-8 wenn es ihn um deutsche Umlaute geht?
                        Weil die Anforderungen an Webapplikationen, was Darstellbarkeit von Sonderzeichen angeht, heutzutage meist weit darüber hinausgehen, nur deutsche Umlaute darstellen zu können.

                        Kommentar


                        • #13
                          Zitat von ChrisB Beitrag anzeigen
                          Weil die Anforderungen an Webapplikationen, was Darstellbarkeit von Sonderzeichen angeht, heutzutage meist weit darüber hinausgehen, nur deutsche Umlaute darstellen zu können.
                          Auf einer komplett deutschen Seite ist UTF8 sinnfrei.

                          Kommentar


                          • #14
                            Zitat von Yoshi- Beitrag anzeigen
                            Auf einer komplett deutschen Seite ist UTF8 sinnfrei.
                            Nein, absolut nicht. Bspw. typografisch korrekte Anführungszeichen enthält keine der ISO-8859-Kodierungen.

                            (Und komm mir jetzt bitte nicht mit HTML-Entities bzw. nummerischen Zeichenreferenzen.)

                            Kommentar


                            • #15
                              Ok, hat geklappt mit UTF-8 und header() Codierung.

                              Danke.

                              Kommentar

                              Lädt...
                              X