Problem mit str_replace

Dieses Thema im Forum "Ruby, php, Perl, Python ..." wurde erstellt von Plinzen, 04.09.2007.

  1. #1 Plinzen, 04.09.2007
    Zuletzt bearbeitet: 04.09.2007
    Plinzen

    Plinzen Foren As

    Dabei seit:
    11.04.2007
    Beiträge:
    96
    Zustimmungen:
    0
    Servus Zusammen,

    ich habe ein Problem mit der Funktion str_replace unter PHP Version 5.2.0 zusammen in der Verwendung in einer Klasse. (Wenn ich es ohne Klasse versuche, dann klappts anscheinend).
    Die beschriebene Methode convertTextToXML soll u.a. die Umlaute durch z.B. ä usw ersetzen.

    Hier der Code der Klasse
    PHP:
    /*
        Diese Klasse enthält allgemeine Tools- Methoden
    */

    class DtoTools{
        
        
    /**
            Diese Funktion konvertiert einen normalen Text in XML für HTML-Ausgabe. 
            Aus "ä" wird z.B. "ä" usw.
        **/
        
    function convertTextToXML($text){
            echo(
    $text);
            
    // Reihenfolge unbedingt einbehalten.
            
    $search = array('ä''Ä''ö''Ö''ü''Ü''ß');
            
    $replace = array('ä''Ä''ö''Ö''ü''Ü''ß');
            
    $text1 str_replace($search$replace$text);
            
            echo(
    "<br>".$text1);
            return 
    $text1;
        }
    Aufgerufen wird das Ganze von einer PHP-Datei, die Formulardaten ausliest:

    PHP:
        /* Ende Plausis, jetzt den Datensatz ins XML einfügen */
        
    if ($ok == true){
            
    $n = new DtoNews();
            
    $n->setCreator($txtCreator);
            
    $n->setTitle($txtTitle);
            
    $n->setDate(DtoTools::makeDate($txtDate));
            
    $n->setContent(DtoTools::convertTextToXML($txtContent));
            
    $n->setId(0);
            if (
    $n->save()==true){
                echo(
    "<h3>Eintrag erfolgreich hinzugef&uuml;gt</h3>");
            }
        }
        
        echo(
    "<p><a href='javascript:history.back()'>zur&uuml;ck</a></p>");
        echo(
    "<p><a href='../index.php'>zur Homepage</a></p>");
    Die Variable $txtContent wird aus einem Formular ausgelesen:
    PHP:
    $txtContent $_POST['txtContent'];
    Das Ergebnis ist jedoch, dass die str_replace-Funktion nicht durchgeführt wurde. In den Variablen $text und $text1 steht der gleiche Wert!

    Kann mir hier jemand weiterhelfen? Gibt es irgendwelche Probleme beim Verwenden von str_replace in einer Klasse??? Bin leider nicht der wahre PHP-Crack...

    cu Plinzen
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Always-Godlike, 04.09.2007
    Zuletzt bearbeitet: 04.09.2007
    Always-Godlike

    Always-Godlike Das Freak

    Dabei seit:
    31.12.2006
    Beiträge:
    939
    Zustimmungen:
    0
    Ort:
    Saarland
    weiß ned direkt auf Anhieb obs stimmt, aber $search und $replace sind bei dir Arrays. Also musst du das ding wohl in ne for-Schleife packen und durchlaufen lassen, ungefähr so:

    Code:
    for($i = 0;$i < count($search); $i++)
    {
    $text = str_replace($search[$i], $replace[$i], $text);
    }
    
    echo $text;

    Muss aber nochmal nachgucken

    EDIT:

    hier benutzen se auch ne Schleife: http://selfphp.de/funktionsreferenz/string_funktionen/str_replace.php
     
  4. Dizzy

    Dizzy Brain Damage

    Dabei seit:
    02.05.2007
    Beiträge:
    857
    Zustimmungen:
    0
    Ort:
    Graz
    Hi,

    laut http://php.net/str_replace kann man das Array direkt als Parameter benutzen.

    Ich verstehe nicht ganz wieso du die Klasse "DtoNews" instanzierst. Die Klasse heißt doch "DtoTools". - Vielleicht war das schon der Fehler? - Ich kann soweit sonst nichts erkennen.

    Gruß
    Dizzy
     
  5. #4 Plinzen, 05.09.2007
    Plinzen

    Plinzen Foren As

    Dabei seit:
    11.04.2007
    Beiträge:
    96
    Zustimmungen:
    0
    Ne, das passt eigentlich schon. Die Klasse DtoNews stellt eine neue Nachricht dar. Das Ganze soll halt einfach ne Verwaltung von Nachrichten werden. Und über die Klasse DtoNews wird die Nachricht in ein XML gespeichert.
    Die Klasse DtoTools wird nicht instanziert. Sie hat eben (im Moment) nur diese eine statische Methode convertTextToXml.

    Nichts desto trotz ich habe heute Nacht mal drüber geschlafen und jetzt glaub ich, ich weiß warum es nicht geht: Am Server kommen einfach nicht die Umlaute 'ä', 'ö', 'ü', usw. an, sondern bereits so komische Zeichen 'Á²', usw. Also praktisch kommen die Umlaute, die ich in der HTML-Textarea eingegeben habe, nicht richtig im PHP-Skript an.

    Woran kann das liegen? Irgendein Zeichensatzproblem? ?(
    Wie krieg ich das hin, dass ich die Umlaute richtig an meinen Server übergeben werden. Das Formular wird mit POST abgesendet.

    Danke, schonmal für die bisherigen antworten!
     
  6. #5 lord-spam, 05.09.2007
    lord-spam

    lord-spam Eroberer

    Dabei seit:
    03.12.2006
    Beiträge:
    73
    Zustimmungen:
    0
    Ort:
    Cuxhaven
    Das ist mit Sicherheit ein Zeichensatz-Problem, ich nutze nur noch UTF-8. Hat deine html-Ausgabe auch den richtigen Zeichensatz? Ansonsten kann man, wenn ich mich nicht irre auch beim <form>-Tag den Zeichensatz angeben.
    Zudem gibt es in PHP doch für alles schon eine Funktion → htmlentities
     
  7. #6 Plinzen, 06.09.2007
    Plinzen

    Plinzen Foren As

    Dabei seit:
    11.04.2007
    Beiträge:
    96
    Zustimmungen:
    0
    Hmm, ja ich denke damit könntest du Recht haben. Die HTML-Seite ist mit ISO-8859-1 codiert. Genauer gesagt hab ich das mit diesem HTML-Tag gemacht:
    Code:
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
    Zuerst wollte ich auch UTF-8 einsetzen, aber leider hat er mir dann die Umlaute auf der HTML-Seite nicht korrekt umgesetzt. Muss ich im PHP-Code dann die HTML-Ausgabe vorher durch irgendeine UTF8-encode-Funktion jagen, bevor ich ihn ausgebe???
     
  8. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  9. #7 lord-spam, 06.09.2007
    lord-spam

    lord-spam Eroberer

    Dabei seit:
    03.12.2006
    Beiträge:
    73
    Zustimmungen:
    0
    Ort:
    Cuxhaven
    Du musst die Daten die du ausgibst dann auch als UTF-8 augeben. Klar. Wenn du UTF-8 nutzen solltest, dann speicher die Datei auch als UTF-8 bzw. die Daten aus einer Datenbank auch in UTF-8 speichern. Sonst kann er die ja nicht richtig darstellen. Die Kodierung einer Datei kannst du z.B. mit
    Code:
    file <dateiname>
    sehen. Ob der Browser die richtige Kodierung nutzt, kannst du bei Firefox ganz einfach auf den Seiteninformationen sehen.
     
  10. #8 Plinzen, 06.09.2007
    Plinzen

    Plinzen Foren As

    Dabei seit:
    11.04.2007
    Beiträge:
    96
    Zustimmungen:
    0
Thema:

Problem mit str_replace

Die Seite wird geladen...

Problem mit str_replace - Ähnliche Themen

  1. Virtualboxproblem

    Virtualboxproblem: Hallo Folgnedes Problem: Ich kann ohne Probleme In Debian-Sid, 64Bit und virtualbox-dkms Unixoide installieren, wenn es sich um eine...
  2. grub-pc Probleme bei upgrade

    grub-pc Probleme bei upgrade: Hallo, ich habe beim dist-upgrade folgendes Problem: ---------- Nach dieser Operation werden 0 B Plattenplatz zusätzlich benutzt. Trigger für...
  3. Problem bei apt-get upgrade (Kali 2.0)

    Problem bei apt-get upgrade (Kali 2.0): Hi, seit paar Tagen habe ich einige Probs. Dachte es sei mal an der Zeit für ein Update und nun tauchen da einige Fehler auf: Es müssen noch 0 B...
  4. Probleme mit YUM

    Probleme mit YUM: Hallo, ich habe CentOs 7 als Dualboot mit Windows 7 auf einen Dell Latitude E5510 installiert. Dies hat soweit auch alles geklappt. Leider habe...
  5. Problem mit Win-Zugriff auf SAMBA

    Problem mit Win-Zugriff auf SAMBA: Hallo rundherum, vielleicht hat jemand eine Idee... Habe jetzt schon 1 1/2 Tage damit verbraten und den Fehler nicht gefunden. Problem:...