Problem mit Zeichensatz

SnEaKy

Erfahrenes Mitglied
Hallo zusammen,

ich lese mittels imap_fetchbody() den Inhalt einer Mail aus und speichere diesen als HTML-Datei. Das funktioniert soweit auch ganz gut. Im nächsten Schritt möchte ich diese HTML-Datei mit Hilfe von preg_match_all() auswerten. Das funktioniert leider nicht mit dem Erfolg, den ich gerne hätte. Nachfolgend ein Beispiel zu meinem Problem:

Zeichensatz ISO-8859-1 => Strasse / Hausnummer : Rathausstr. 3
Zeichensatz UTF8 => Strasse / Hausnummer : Rathausstr.?3

Irgendwie ist zwischen Rathausstr. und der Hausnummer noch ein anderes Steuerzeichen eingebaut, welches ich mit regulären Ausdrücken nicht wirklich abgefangen bekomme.

Inzwischen habe ich mir eine kleines Hilfsskript gebastel, damit ich wenigstens an meine Daten rankomme, die ich auslesen möchte. Leider ist damit das Zeichensatzproblem noch nicht gelöst.
Nun meine Frage. Hat jemand eine Idee, wie ich diese Steuerzeichen durch ein Leerzeichen ersetzen kann?

Vorab vielen Dank.
 
Vielleicht so, ich bin mir nicht sicher (kein PHP Programmierer)

PHP:
replace("\xff\xfd", $replacement, $str);

Aber vielleicht lässt sich das auch anders lösen. Zeig mal den Code, wo du den String umwandelst.
 
PHP:
$file = file($file);
    $lines = array();
    $i = 0;
    while($i < count($file))
    {
        if(preg_match("!<font face=\"Arial\" size=\"3\">(.)*!is", $file[$i]))
        {
            $line = $file[$i];
            while(!preg_match("!(.)*</font>!is", $file[$i]))
            {
                $i++;
                $line .=$file[$i];
            }
            $line = str_replace("<font face=\"Arial\" size=\"3\">", "", $line);
            $line = str_replace("</font>", "", $line);
            $line = str_replace("\n", "", $line);
            $line = str_replace("\r", "", $line);
            $line = str_replace("\t", "", $line);
            $line = str_replace("\xff\xfd", "", $line); 

            array_push($lines, $line);
        }
        $line = "";
        $i++;
    }

Zwar nicht besonders schön, aber es erfüllt seinen Zweck.

Deine replace-Funktion hat leider keinen Erfolg gezeigt, das Zeichen ist weiterhin enthalten...
 
Mit den Funktionen habe ich es auch schon versucht, leider ohne Erfolg.

Inzwischen habe ich herausgefunden, dass die HTML-Datei in ISO-8859-1 vorliegt. Das heißt das müssen Steuerzeichen aus diesem Zeichensatz sein, die mir die Probleme bereiten. Wie ich das löse, steht aber noch in den Sternen...

Hilfreiche Denkansetze sind willkommen.
 
Hab es inzwischen nun gelöst.

Ich wandel den jeweiligen String erst in eine ASCII-Zeichenkette, so dass ich die Zahlen sehe und ersetze dann die entsprechende Zahl und wandel die Zeichenkette wieder zurück in einen brauchbaren String.

Trotzdem vielen Dank für die Hilfe.
 
Zurück