WTF is das denn? Gibts da nich ne Intelligentere Methode?

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • WTF is das denn? Gibts da nich ne Intelligentere Methode?

    Folgende Funktion:

    PHP Code:
    function dv_picture_get_filename($bild_titel$bild_endung) {
        
    $result dv_mysql_query("SELECT last_insert_id() as last FROM dv_bild");
        
    $arr mysql_fetch_assoc($result);
        
    $id $arr['last'];
        
        echo 
    "<br /><br />Input: $bild_titel.$bild_endung";
        
        
    $titel $bild_titel;
        
    $endung $bild_endung;
        
        
    // Umlaute ersetzen und ID anhängen
        
    $titel str_replace("ä","ae",$titel);
        
    $titel str_replace("ö","oe",$titel);
        
    $titel str_replace("ü","ue",$titel);

        
    $titel str_replace("Ä","AE",$titel);
        
    $titel str_replace("Ö","OE",$titel);
        
    $titel str_replace("Ü","UE",$titel);

        
    $titel str_replace("ß","ss",$titel);
        
        
    $titel str_replace(" ","_",$titel);
        
        echo 
    "<br />Output: $titel."_""$id.$endung";

        return 
    $titel "_$id." $endung;

    Bevor mich jemand anmeckert: Ja, ich weiß, str_replace aktzeptiert auch Arrays. Ich hab das auseinandergefriemelt um den Fehler zu finden.

    Also. Sofern ich die Funktion direkt im Quelltext aufrufe, mit z.B.

    PHP Code:
    echo dv_picture_get_filename("Hallo jürgen hüöäö","png"); 
    funktioniert das ganze einwandfrei. Wenn ich allerdings Daten aus einem Formluar nehme, werden du Umlaute plötzlich nichtmer erkannt bzw. ersetzt, sondern nur noch das Leerzeichen. Jetzt habe ich mir aus dem Dateinamen da wo das ö stehen sollte mal den Teil "ö" kopiert, und schon wird das ganze wieder erkannt, aber das kann doch nicht wirklich so gedacht sein?!

    Mir ist inzwischen klargeworden, dass das ganze wohl am UTF-8 zu liegen hat, dennich würde ich gerne wissen, ob jemand ne intelligentere Methode zur hand hat, um den Kram da umzuwandeln. Jemand ne Idee? Wäre sehr dankbar!
    Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

  • #2
    also du sendest die daten UTF 8?

    dann ist doch klar, dass du die Zeichen auch so angeben musst, wie sie der Funktion auch mitgegeben werden. ansonsten kann str_replace auch nicht matchen würde ich sagen.

    Comment


    • #3
      Ja so dachte ich mir das jetzt auch, als ich mal drauf gekommen bin das der DocType von meinem xHTML ein UTF-8 Charset verwendet.

      Aber gibts keine andere Möglichkeit als da jetzt diese komischen kryptischen Zeichen zum ersetzen zu benutzen? Gibts nicht wenigstens irgendwelche Standardisierten Codes oderso?
      Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

      Comment


      • #4
        willkommen in der Welt der Zeichensätze.

        Aber mal ehrlich, du hast dem XHTML Dokument doch nicht völlig willkürlich ne utf8 gegeben?
        außerdem schreibst du dort die Umlaute doch auch nicht "im klartext" in den quelltext sondern entsprechend als utf 8.

        Comment


        • #5
          Ehm ja, danke für das Willkommen :P

          Das ist auch sehr passend, denn so wirklich Plan hab ich nicht, was davon Sinn macht und was nicht, daher weiß ich nicht genau ob das UTF-8 jetzt ne Fehlentscheidung war. In meinem xHTML-Dokument verwende ich &ouml; & Co. aber die erkennt str_replace auch nicht, wäre auch zu schön gewesen

          Also gehts wirklich nicht anders? Find ich zwar etwas merkwürdig aber dann werd ichs wohl so machen. Danke!
          Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

          Comment


          • #6
            benutzt du für html und php den gleichen editor

            oder kann es sein, dass dein html editor die datei im utf speichert, dir aber entsprechend die Zeichen "normal" anzeigt,
            wogegen deine PHP Umgebung das nicht üterstützt?

            Comment


            • #7
              Ich benutze denselben Editor (Zend Studio) und gebe eigentlich sämtliches HTML via PHP aus. Das mein Dokument UTF-8 ist meine ich so:

              Code:
              <?xml version="1.0" encoding="UTF-8"?>
              <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" 
              "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
              <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
              Das die Daten im aus den Formularen im UTF-8 charset kommen, liegt denke ich daran. Oder irre ich?
              Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

              Comment


              • #8
                Original geschrieben von ArSeN
                Das die Daten im aus den Formularen im UTF-8 charset kommen, liegt denke ich daran. Oder irre ich?
                Liegt höchstens daran, wenn die vorgelagerte Stelle (HTTP-Header) nichts zur Zeichenkodierung aussagt.

                Und enctype im Formular ist auch noch eine relevante Stelle, wenn's dann ans Versenden der Daten geht.
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Comment

                Working...
                X