Suchen-Ersetzenin CGI-Script
Suchen-Ersetzenin CGI-Script
am 05.12.2007 15:03:16 von Robert Gladapex
Hallo NG!
Ich habe ein cgi-script, welches aus einem textarea-Feld Text entgegen
nehmen soll und in diesem Zeichen suchen und ersetzen soll:
$texte2 =~ s/\n/\\\\/g;
ersetzt alle Zeilenumbrüche mit 2 Backslashes.
Nun sollen auch noch alle Unterstriche (_) durch Bindestriche(-) ersetzt
werden:
$texte2 =~ s/_/-/g;
Beides klappt wunderbar. Nun habe ich versucht, beide Ersetzungen zu
kombinieren:
$texte2 =~ s/\n/\\\\/g|s/_/\\_/g;
in einem Script auf der Kommandozeile klappt das, im cgi-script wird nur
die erste Ersetzung durchgeführt.
Ich bin ratlos, vielleicht hat jemand einen Tip für mich, wo ich
ansetzen kann?!
Danke und GruÃ
Robert
--
* it's more fun to compute...
Re: Suchen-Ersetzenin CGI-Script
am 05.12.2007 15:13:48 von Moritz Lenz
Hallo,
Robert Gladapex wrote:
> Beides klappt wunderbar. Nun habe ich versucht, beide Ersetzungen zu
> kombinieren:
>=20
> $texte2 =3D~ s/\n/\\\\/g|s/_/\\_/g;
Huch, was ist das denn? Binäres "oder" von zwei Ersetzungen?
Führe die Ersetzungen einfach nacheinander aus:
$texte2 =3D~ s/_/\\_/;
$texte2 =3D~ s/\n/\\\\/;
Übrigens sendet dein slrn Umlaute als utf-8, schreibt aber iso-8859-1 i=
n
den Header (oder auf gut Deutsch: "deine Umlaute sind kaputt").
Grüße,
Moritz
--=20
Moritz Lenz
http://perl-6.de/ http://moritz.faui2k3.org/
Re: Suchen-Ersetzenin CGI-Script
am 06.12.2007 12:17:11 von Robert Gladapex
Moritz Lenz schrieb:
>
> Huch, was ist das denn? Binäres "oder" von zwei Ersetzungen?
> Führe die Ersetzungen einfach nacheinander aus:
> $texte2 =~ s/_/\\_/;
> $texte2 =~ s/\n/\\\\/;
Habe ich so gemacht un das klappt gut...
Nur so interessehalber:
Gibt es denn aber keine Möglichkeit, innerhalb einer
Suchen/Ersetzen-Aktion mehrere Such-Ersetzen-Muster aneinander zu
hängen, ähnlich wie in sed mit ; getrennt?
>
> Übrigens sendet dein slrn Umlaute als utf-8, schreibt aber iso-8859-1 in
> den Header (oder auf gut Deutsch: "deine Umlaute sind kaputt").
Jetzt besser? Anscheinend unterstützt slrn noch nicht vollständig
UTF-8...oder ich habe was falsch konfiguriert...
Gruß Robert
--
* it's more fun to compute...
Re: Suchen-Ersetzenin CGI-Script
am 06.12.2007 12:29:43 von Moritz Lenz
Hallo,
Robert Gladapex wrote:
> Moritz Lenz schrieb:
>>
>> Huch, was ist das denn? Binï¿=BDres "oder" von zwei Ersetzungen?
>> Fï¿=BDhre die Ersetzungen einfach nacheinander aus:
>> $texte2 =3D~ s/_/\\_/;
>> $texte2 =3D~ s/\n/\\\\/;
>=20
> Habe ich so gemacht un das klappt gut...
> Nur so interessehalber:
> Gibt es denn aber keine Mï¿=BDglichkeit, innerhalb einer
> Suchen/Ersetzen-Aktion mehrere Such-Ersetzen-Muster aneinander zu
> hï¿=BDngen, ï¿=BDhnlich wie in sed mit ; getrennt?
Man kann sich da was basteln:
my %subst =3D (
"_" =3D> "\\_",
"\n" =3D> "\\\\",
);
my $re =3D join '|', keys %subst;
$string =3D~ s/($re)/$subst{$1}/g
>> ï¿=BDbrigens sendet dein slrn Umlaute als utf-8, schreibt aber iso=
-8859-1 in
>> den Header (oder auf gut Deutsch: "deine Umlaute sind kaputt").
>=20
> Jetzt besser?=20
Nein.
> Anscheinend unterstï¿=BDtzt slrn noch nicht vollstï¿=BDndig
> UTF-8...oder ich habe was falsch konfiguriert...
Ich tippe auf die zweite Möglichkeit ;-)
GrüÃe,
Moritz
--=20
Moritz Lenz
http://perl-6.de/ http://moritz.faui2k3.org/
Re: Suchen-Ersetzenin CGI-Script
am 06.12.2007 22:49:12 von newsnullsieben
Robert Gladapex wrote:
> Nur so interessehalber:
> Gibt es denn aber keine Möglichkeit, innerhalb einer
> Suchen/Ersetzen-Aktion mehrere Such-Ersetzen-Muster aneinander zu
> hängen, ähnlich wie in sed mit ; getrennt?
Ah, sed(1) ... Dann mach's eben so:
for ($text2) {
s/_/-/g;
s/\n/\\\\/g;
}
Und statt s/_/-/g schlage ich tr/_/-/ vor.
Da kann man auch mehrere (1-zu-1- oder n-zu-1-)Ersetzungen zusammenfassen:
tr/_ /-=/; # Ersetze "_" durch "-" und " " durch "="
tr[_ ?*/][-]; # Ersetze "_", " ", "?", "*" und "/" durch "-"
Ciao,
Harald
--
Harald H.-J. Bongartz
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -=-=-
There's no place like ~
Re: Suchen-Ersetzenin CGI-Script
am 07.12.2007 18:25:36 von w.koenig
On Dec 5, 3:03 pm, Robert Gladapex wrote:
> Hallo NG!
>
> Ich habe ein cgi-script, welches aus einem textarea-Feld Text entgegen
> nehmen soll und in diesem Zeichen suchen und ersetzen soll:
>
> $texte2 =3D~ s/\n/\\\\/g;
>
> ersetzt alle Zeilenumbrüche mit 2 Backslashes.
>
> Nun sollen auch noch alle Unterstriche (_) durch Bindestriche(-) ersetzt
> werden:
>
> $texte2 =3D~ s/_/-/g;
>
> Beides klappt wunderbar. Nun habe ich versucht, beide Ersetzungen zu
> kombinieren:
derartige mehrfachen Ersetzungen lassen sich einfach so durchführen:
%subst =3D ( "\n" =3D> "\\\\", "_" =3D> "-" );
$text2 =3D~ s/([\n_])/ $subst{$1} /eg;
das ist beliebig erweiterbar und effizient.
Winfried König