Sonderzeich, Anfürhungszeichen, etc.

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

  • Sonderzeich, Anfürhungszeichen, etc.

    Hi,

    Domainfactory hat in mancherlei Hinsicht eine seltsame php-Version. Auf jedenfall verhält sich der php-Interpreter anders als auf einem anderen Server.

    Wenn ich Daten per Formular und method=post übermittle werden
    -) Umlaute in die Html-codes übersetzt (&[x]uml
    -) Anfürhungszeichen mit einem Backslash davor versehen
    -) aber keine sonstigen Sonderzeichen in die entsprechenden html-Codes übersetzt.

    Problem: Wenn ich jetzt einfach sonderzeichen ersetzten lassen mit
    PHP-Code:
    $trans get_html_translation_table(HTML_ENTITIES,ENT_QUOTES);
    $name strtr(stripslashes(trim($_POST['name'])),$trans); 
    bekomme ich bei Umlauten eine Doppelte Übersetzung, also "können" wird "k& amp;ouml;nnen" ([color=red]ohne Abstand[/color]).

    Frage: Kann ich das Problem beheben indem ich in die Variable $trans was anderes reinschreib oder muss ich erst umstänständlich die html-codes für die Umlaute entfernen um dann alle Sonderzeichen wieder in html-codes zu übersetzen.

    Problem2: Kann ich auch irgendwie verhindern, dass html-Codes, die ich direkt ins Forumlar eingebe nochmals codiert werden?

    Thanx,
    Syco
    Zuletzt geändert von syco23; 16.02.2004, 01:00.
    [COLOR=darkblue].: 1+1=23 :.[/COLOR]

  • #2
    falsch gesucht?
    http://www.php-resource.de/forum/sho...&threadid=6845

    zu 2) erklär das mal genauer ... ich habs nicht verstanden
    Kissolino.com

    Kommentar


    • #3
      Deinem Post entnehme ich also, dass es keine andere Möglichkeit als
      $trans_back = array_flip($trans);
      oder etwas in der Art zu verwenden, gibt. d.h. 2mal umwandeln ist angesagt.

      @2: Nun, wenn ich z.b. "& Delta;" (ohne Leerzeichen) eingebe soll der String in dieser Forum erhalten bleiben und nicht zu "& amp;Delta;" (ohne Leerzeichen) werden.
      EDIT:
      Siehe roter Text oben, ich habe jetzt einen Abstand reingemacht. Jetzt sollte mein Problem leichter verständlich sein
      Zuletzt geändert von syco23; 16.02.2004, 01:01.
      [COLOR=darkblue].: 1+1=23 :.[/COLOR]

      Kommentar


      • #4
        wenn sich das verhalten nicht per ini_set() abstellen lässt (frag mal den hoster), kannst du so vorgehen:

        str_replace('&','&',$var);
        stripslashes()
        html_entity_decode()

        in der reihenfolge
        Kissolino.com

        Kommentar


        • #5
          Ich hab jetzt folgendes gemacht:
          PHP-Code:
          ini_set("magic_quotes_gpc","False");
          $trans = array("ä"=>"&auml;","ö"=>"&ouml;","ü"=>"&uuml;",">"=>"&gt;","<"=>"&lt;",'"'=>"&quot;","'"=>"'");
          $trans_back array_flip($trans); 
          Der Rest bleibt eben uncodiert.

          Ein html-Problem ist aber dazu gekommen: Ich speicher z.B. "& Delta;" in die Datenbank. Wenn ich den Datensatz per Formular im Browser editiere wird ein "&Delta;" angezeigt, obwohl "& Delta;" im Quelltext steht. Wenn ich jetzt nochmal speichere kommt ein "Ä" in die Datenbank.

          Offenbar schickt der Browser das nächstbeste Acsii-Zeichen statt dem Delta.

          Irgendwelche Vorschläge zur Problembehebung?

          ["& Delta;" wieder ohne Abstand !]
          [COLOR=darkblue].: 1+1=23 :.[/COLOR]

          Kommentar

          Lädt...
          X