typographische Anführungszeichen ersetzen
Charles
- perl
Hallo,
in der Textarea eines Formulars werden des öfteren von Benutzern auch (vermutlich über Copy&Paste aus Word-Dateien) typographische statt normaler Anführungszeichen verwendet, also jene Anführungszeichen, die so wie in der folgenden Zeile
„am Anfang eines Zitats unten stehen und am Ende des Zitats“
oben stehen.
Ich würde diese nun gerne, wenn ich die üblichen Ersetzungsfunktionen vornehme:
read(STDIN, my $buffer, $ENV{'CONTENT_LENGTH'});
my @pairs = split(/&/, $buffer);
foreach my $pair (@pairs) {
my ($name, $value) = split(/=/, $pair);
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
.....
}
in normale Anführungszeichen ersetzen.
Bisher bin ich damit aber kläglich gescheitert.
Wie muss ich diese typographischen Anführungszeichen denn überhaupt ansprechen?
hi,
Wie muss ich diese typographischen Anführungszeichen denn überhaupt ansprechen?
z.B. so:
my $value = '„am Anfang eines Zitats unten stehen und am Ende des Zitats“';
$value =~ s/„|“/"/g;
print "$value\n";
das kommt raus:
"am Anfang eines Zitats unten stehen und am Ende des Zitats"
--roro
Danke, das klappt!
Auf die allereinfachste Lösung bin ich gar nicht gekommen!
Ich würde diese nun gerne, wenn ich die üblichen Ersetzungsfunktionen vornehme:
read(STDIN, my $buffer, $ENV{'CONTENT_LENGTH'});Splitten der name-value pairs
my @pairs = split(/&/, $buffer);
foreach my $pair (@pairs) {
my ($name, $value) = split(/=/, $pair);
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
.....
}
üblicher wäre hier die Verwendung von use CGI;
und dann einfach die von Rolf gezeigt Ersetzung auf den Parameter anwenden.
Struppi.