Seltsames Problem mit der Variable im Array

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

  • Seltsames Problem mit der Variable im Array

    Hallo,

    hab ein seltsames Problem.

    Ich gebe in einem Array eine Variable aus der Datenbank an.
    Diese wird dann nicht verarbeitet.
    Wenn ich aber in die Variable einen festen Wert angeben, wird es seltsamer
    Weiße richtig ausgeführt.
    Ich hoffen ich habe es einigermaßen Verständlich gemacht.
    Hier mal der Code:
    PHP-Code:
    $titel $name;
    ### entfernen der großbuchstaben und sonderzeichen aus dem feld titel ###################
    $ersetzen = array('A' => 'a''B' => 'b''C' => 'c''D' => 'd',
            
    'A' => 'a''B' => 'b''C' => 'c''D' => 'd''E' => 'e''F' => 'f''G' => 'g''H' => 'h',
            
    'I' => 'i''J' => 'j''K' => 'k''L' => 'l''M' => 'm''N' => 'n''O' => 'o''P' => 'b',
            
    'Q' => 'q''R' => 'r''S' => 's''T' => 't''U' => 'u''V' => 'v''W' => 'w''X' => 'x',
            
    'Y' => 'y''Z' => 'z',
            
    'Ä' => 'oe''Ö' => 'oe''Ü' => 'ue''ä' => 'ae''ö' => 'oe''ü' => 'ue''ß' => 'ss',
            
    ' ' => '''@' => '''!' => '''"' => '''§' => '''$' => '''%' => '''&' => '',
            
    '/' => '''(' => ''')' => '''=' => '''?' => '''`' => '''{' => '''}' => '',
            
    '[' => ''']' => '''#' => '''*' => '',    '~' => ''';' => ''':' => '''_' => '',
            
    ',' => '''.' => '''-' => ''',' => '''+' => '''„' => '''„' => '''“' => '');
    $titel_neu strtrstrtolower$titel ), $ersetzen );

    echo 
    $titel_neu
    Wenn ich in der Var $titel ="ÜÄÖ usw.." eintrage, dann wandelt das Script
    alles korrekt um.
    Warum geht das nicht mit der Variablen aus der Datenbank?

    Danke schon mal im voraus

  • #2
    Ich vermute du hast ein Zeichenkodierungsproblem. Für die Datenbankverbindung wird eine andere Kodierung verwendet (ich vermute mal UTF-8), als für deine PHP-Datei. Speichere die PHP-Datei in der selben Kodierung, dann klappt es auch mit dem Ersetzen.

    Kommentar


    • #3
      Nur mal so allgemein, ist das nicht doppelt gemoppelt?
      Nur bei Ä, Ö und Ü könnte es denke ich passieren, dass strtolower die nicht in Kleinbuchstaben umwandelt.

      PHP-Code:
      'A' => 'a''B' => 'b''C' => 'c''D' => 'd'   // ... usw.

      strtolower$titel 
      Und dafür kannst Du eine Zeichenklasse definieren, in der die nicht enthalten sind.

      PHP-Code:
      '@' => '''!' => '''"' => '''§' => '''$' => ''// ... usw. 
      So wäre es wohl einfacher:

      PHP-Code:
      <?php
      $titel 
      "Nur bei Ä, Ö und Ü könnte es denke ich passieren, dass strtolower die nicht in Kleinbuchstaben umwandelt.";

      $ersetzen  = array("Ä"=>"ae","Ö"=>"oe","Ü"=>"ue","ä"=>"ae","ö"=>"oe","ü"=>"ue","ß"=>"ss");
      $titel_neu strtolower(strtr($titel$ersetzen));
      $titel_neu preg_replace("/[^a-z0-9\s]/"""$titel_neu);

      echo 
      "Ausgabe: ".$titel_neu."\n";

      // Ausgabe: nur bei ae oe und ue koennte es denke ich passieren dass strtolower die nicht in kleinbuchstaben umwandelt
      ?>
      Was die eigentliche Frage betrifft, das wird wohl so sein, wie h3ll bereits schrieb.

      Kommentar


      • #4
        super so gehts.
        mit den umlauten gibt es aber immer noch ein problem.
        wenn ich aber bei der auswertung der datenbank die
        texte gleich mit
        PHP-Code:
        htmlentities 
        umwandle,
        ist das problem auch schon gelöst.

        Kommentar


        • #5
          htmlentities() sollte nicht verwendet werden. Gib im HTTP-Header die richtige Zeichenkodierung an, dann funktionieren auch alle Zeichen. htmlentities() verschleiert nur das Problem, aber behebt es nicht.

          Kommentar

          Lädt...
          X