Hallo,
habe ein kleines Skript welches einen UTF-8 String aus einer MySQL Datenbank ausliest.
Mit folgendem Code-Schnippsel möchte ich alle Sonderzeichen entfernen:
Das Problem ist nachher nur, das es in dem Text anscheinend "besondere" Anführungszeichen gibt. Das letzte von beiden wird bei der Ausgabe als "Weißes Fragezeichen auf schwarzem Grund" ausgegeben. Aber auch nur, wenn ich das Ü im Pattern verwende.
Entfernen der Anführungszeichen mittels:
brachte auch nicht den gewünschten Erfolg.
Bis auf diese Fehlinterpretation, funktioniert das Ganze einwandfrei. Natürlich ist das immer so eine Sache mit den Umlauten über SSH in VIM zu arbeiten, deshalb probierte ich auch noch ein anderes Pattern
Ich habe ehrlich gesagt keine Ahnung wie es funktioniert. Es ersetzt jedoch auch alle Sonderzeichen einschließlich den Umlauten. Um noch mehr Fehlerquellen auszuschließen wäre es vielleicht einfach das Pattern entsprechend zu erweitern das die Umlaute nicht entfernt werden.
Ansonsten sind bereits folgende Fehlerquellen ausgeschlossen: Putty ist auf UTF-8 getrimmt. Die Konsole kann UTF-8 und die Datei so wie VIM sind auch mit
:set encoding=utf-8
:set fileencoding=utf-8
bearbeitet.
Ich wäre auch dankbar für einen ganz anderen Lösungsweg. Ziel ist es einfach nur alle Sonderzeichen aus einem UTF-8 String zu entfernen. Die Lösung soll dabei dem Whitelist Ansatz folgen und nicht dem Blacklist Ansatz. Ich will also sagen können, welche Zeichen erlaubt sind und nicht alle Möglichkeiten auflisten, die nicht erlaubt sind.
Bei der PHP Version handelt es sich um: PHP 5.2.4-2ubuntu5.5
Vielen Dank für deine Mühe.
Viele Grüße
Master.of.Freaks
habe ein kleines Skript welches einen UTF-8 String aus einer MySQL Datenbank ausliest.
Mit folgendem Code-Schnippsel möchte ich alle Sonderzeichen entfernen:
PHP-Code:
$pattern = "/[^a-zA-Z0-9äöüÄÖÜß]/";
$text = preg_replace($pattern," ",$text);
Entfernen der Anführungszeichen mittels:
PHP-Code:
$text = str_replace('"', "", $text);
Bis auf diese Fehlinterpretation, funktioniert das Ganze einwandfrei. Natürlich ist das immer so eine Sache mit den Umlauten über SSH in VIM zu arbeiten, deshalb probierte ich auch noch ein anderes Pattern
PHP-Code:
$text = preg_replace('/[^<>&!-%x27-;=?-~ ]/e',"",$text);
Ansonsten sind bereits folgende Fehlerquellen ausgeschlossen: Putty ist auf UTF-8 getrimmt. Die Konsole kann UTF-8 und die Datei so wie VIM sind auch mit
:set encoding=utf-8
:set fileencoding=utf-8
bearbeitet.
Ich wäre auch dankbar für einen ganz anderen Lösungsweg. Ziel ist es einfach nur alle Sonderzeichen aus einem UTF-8 String zu entfernen. Die Lösung soll dabei dem Whitelist Ansatz folgen und nicht dem Blacklist Ansatz. Ich will also sagen können, welche Zeichen erlaubt sind und nicht alle Möglichkeiten auflisten, die nicht erlaubt sind.
Bei der PHP Version handelt es sich um: PHP 5.2.4-2ubuntu5.5
Vielen Dank für deine Mühe.
Viele Grüße
Master.of.Freaks
Kommentar