aber wie würde denn der RegExp aussehen, wenn ich bspw.
<vorname>Hallo Thomas </vorname>
"filtern" wollte?
Das ist nicht ganz so trivial, da die Sonderzeichen ja nur im String, nicht aber um die Elemente herum maskiert werden sollen. Entweder du wirfst einen XML-Parser an, der dir den Textinhalt liefert, den du dann behandelst, oder du musst einen entsprechenden RegExp bauen. Kleines Beispiel, das du natürlich deinen Bedürfnissen entsprechend ausbauen müsstest:
use strict;
use diagnostics;
use [link:http://search.cpan.org/~gaas/HTML-Parser-3.56/lib/HTML/Entities.pm@title=HTML::Entities];
my $xml = '<foo>"1 > 0"</foo>';
$xml =~ s/(?<=\<foo\>)(.*)(?=\<\/foo\>)/[link:http://search.cpan.org/~gaas/HTML-Parser-3.56/lib/HTML/Entities.pm#encode_entities@title=encode_entities]($1, '<>&"\'')/e;
print $xml;
Das gibt dir aus:
<foo>"1 > 0"</foo>
Wichtig ist der e-Modifier, der dafür sorgt, dass die Funktion encode_entitities bei der Ersetzung ausgeführt wird. Und weil es ja nur um XML geht, kannst du HTML::Entities anweisen, welche Zeichen es ersetzen soll.
Siechfred
--
Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.
Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.