Problem mit str_replace

Diskutiere Problem mit str_replace im Ruby, php, Perl, Python ... Forum im Bereich Programmieren unter Linux/Unix; 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...

  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. #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
     
  3. 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
     
  4. #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!
     
  5. #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
     
  6. #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???
     
  7. #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.
     
  8. #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. Probleme mit WinSCP und Rechten

    Probleme mit WinSCP und Rechten: Hallo. Ich habe vor ein paar Tgen meinen ersten Ubuntu 16.04 vServer bei 1&1 bestellt, gemäß dem sicheren Umgang damit, habe ich erstmal den SSH...
  2. Bootproblem

    Bootproblem: Hallo Ein PC (i686 mit Debian unstable, nox) hat Bootprobleme (will heißen ist erfolgt keine Grafikausgabe. was ich bisher gemacht habe: HDD an...
  3. Crontab und Scripts - Problem

    Crontab und Scripts - Problem: Hallo Zusammen Ich habe ein Script welches mittels Cronjob ausgeführt werden soll. Gemäss Log wird es auch ausgeführt, jedoch passiert nichts:...
  4. Problem bei der installation einer Sun Netzwerkkarte

    Problem bei der installation einer Sun Netzwerkkarte: Guten Morgen zusammen, beim installieren einer zusätzlichen Netzwerkkarte habe ich ein Problem. Die Karte wird nicht automatisch installiert. Es...
  5. Problem bei der Vergabe von Sciherheitsinformationen auf eine Freiagbe

    Problem bei der Vergabe von Sciherheitsinformationen auf eine Freiagbe: Liebe Community, zurzeit arbeite ich an eine Active Directory Domäne die mittels Samba läuft. Dazu habe ich einen AD DC auf Debian 8.7 mit Samba...