preg_replace-Problem

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

  • preg_replace-Problem

    Ich weiss nicht was ich falsch mache, aber ich verzweifle gerade an einem preg_replace, der bisher eigentlich immer funktioniert hat. Und zwar sollen deutsche Sonderzeichen (ä,ö,ü,ß) in (ae, oe, ue, sz) umgewandelt werden. Hierzu hab ich folgenden preg_replace:

    PHP-Code:
            $old_pattern = array ("/ä/""/ö/""/ü/""/ß/""/[^a-zA-Z0-9]/""/_+/""/_$/");
            
    $new_pattern = array ("ae" "oe" "ue" "ss" "_"             "_"   ""    );

            
    $linkpreg_replace ($old_pattern$new_pattern$headline);
            echo 
    $link
    Bei folgendem Text:
    Das ist eine schöne Überschrift
    kommt folgendes raus:
    Das_ist_eine_sch_ne__berschrift

    Kann mir jemand sagen, warum der mit dem preg_replace nicht klar kommt? Beim großen Ü versteh ich das ja, das ist noch nicht berücksichtigt, aber warum macht er das kleine ö nicht richtig? Hab schon andere Texte probiert, immer das gleiche.
    Das Genie überblickt das Chaos!

    Wer Rechtschreibfehler findet, darf sie behalten!

  • #2
    Irgendwie scheint der das "ü" nicht als solches zu erkennen? Woran kann dass denn liegen? An der Datenbank?
    Das Genie überblickt das Chaos!

    Wer Rechtschreibfehler findet, darf sie behalten!

    Kommentar


    • #3
      Wieso denn unbedingt ein RegExp wenn es nur um die Ersetzung von fixen Zeichen geht? Würde hier str_replace() + Arrays verwenden.
      PHP-Code:
      $search = array('ü','Ü','ö','Ö','ä','Ä','ß');
      $replace = array('ue','Ue','oe','Oe','ae','Ae','ss');
      $string str_replace($search,$replace,$string); 
      Gruss

      tobi
      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

      Kommentar


      • #4
        Hmm, von der Idee her eigentlich nicht schlecht. Leider funktionierts aber auch damit nicht. Ich versteh's absolut nicht. Irgendwie kann er mit dem ö nichts anfangen.

        An was könnte es denn noch liegen?
        Das Genie überblickt das Chaos!

        Wer Rechtschreibfehler findet, darf sie behalten!

        Kommentar


        • #5
          Ist es kein ö sondern ein
          PHP-Code:
          &ouml
          ?
          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

          Kommentar


          • #6
            Probier mal statt "ö", "\xF6" aus

            Kommentar


            • #7
              Oder Ö.

              Der RegEx ist sogar halbwegs sinnvoll. Die Umlaute kann man zwar durchaus mit str_replace() ersetzen, aber die Zeichenklasse [â-zA-Z0-9] nicht. So kann man alles in einem Rutsch machen.
              Aber was Umlaute angeht, so hatte ich mit preg_replace_callback() mal Probleme (ob das bei preg_replace() auch so ist, weiß ich nicht). Mit str_replace() ging es einwandfrei. Das Dokument war dabei in UTF-8 gespeichert. Bei ASCII ging es auch bei preg_replace_callback(), aber das wollte ich ja nicht.
              Also einfach mal beide Funktionen ausprobieren.

              Kommentar


              • #8
                @jahlives: das hatte ich zuerst im Verdacht, war aber nicht der Fall.
                @$_Baker: genau das war's. Vielen Dank für den wertvollen Tipp.
                @Manko10: werd' ich mir auch mal merken, vielleicht ist es das nächste Mal ja Ö

                Nochmals besten Dank an euch alle. Wäre wohl nie drauf gekommen, zumal man das auch beim Auslesen oder im Quelltext nicht erkennt.
                Das Genie überblickt das Chaos!

                Wer Rechtschreibfehler findet, darf sie behalten!

                Kommentar

                Lädt...
                X