Leser: 19
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
sub parseXMLfile {
my $file = shift;
my $xml;
my %xml;
# datei einlesen
if ( dbLockOpen( IN, "<$file" ) ) {
while (<IN>) { $xml .= $_; }
dbLockClose( IN, "$file" );
}
else {
return;
}
# xml-tags suchen
while ( ( $xml =~ /(<([a-zA-Z0-9\-_]+)>)/ ) ) {
my $tagName = $2;
my $tag = $1;
if ( ( $xml =~ /<($tagName)>((.|\n)*?)<\/$tagName>/i ) ) {
# gefunden tag speichern
my $tag = $1;
# von $tag umschlossenen text suchen
$xml =~ /(<$tag>((.|\n)*?)<\/$tag>)/i;
# value speichern
$value = $2;
# gesamten gefundenen tag loeschen
$xml =~ s/(<$tag>((.|\n)*?)<\/$tag>)//i;
$xml{ lc($tag) } = $value;
}
else {
$xml =~ s/$tag//
; # gefundenen anfangstag loeschen (da kein endtag vorhanden)
}
}
return %xml;
}
1
2
3
4
5
6
7
8
9
10
11
12
<VERSION>1.0</VERSION>
<HTML>on</HTML>
<REPLY-TO>info@example.org</REPLY-TO>
<FROM>XXXXX</FROM>
<ATTACH></ATTACH>
<SUBJECT>XXXXXX</SUBJECT>
<FILTERS></FILTERS>
<TRACKOPENINGS></TRACKOPENINGS>
<PERSONALIZEDTRACKING></PERSONALIZEDTRACKING>
<CHARSET>ISO-8859-1</CHARSET>
<HTML-PART></HTML-PART>
<PLAIN-PART></PLAIN-PART>
<HTML-PART></HTML-PART>
warn "Found tag $tag ($tagName)";
Guest AndoDas sonderbare ist.. das es auf einem anderen server ohne probleme funktioniert hat. Liegt das vielleicht an irgendwelchen Apache/Perl/CGI einstellunge.
<HTML-PART></HTML-PART>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
while ( ( $xml =~ /(<([a-zA-Z0-9\-_]+)>)/ ) ) {
my $tagName = $2;
my $tag = $1;
if ( ( $xml =~ /<($tagName)>(.*?)<\/$tagName>/i/s ) ) {
# gefunden tag speichern
my $tag = $1;
# von $tag umschlossenen text suchen
$xml =~ /(<$tag>(.*?)<\/$tag>)/i/s;
# value speichern
$value = $2;
# gesamten gefundenen tag loeschen
$xml =~ s/(<$tag>(.*?)<\/$tag>)//i/s;
$xml{ lc($tag) } = $value;
}
else {
$xml =~ s/$tag//
; # gefundenen anfangstag loeschen (da kein endtag vorhanden)
}
}
Guest Ando
Code: (dl )if ( ( $xml =~ /<($tagName)>(.*?)<\/$tagName>/i/s ) ) {
if ( $xml =~ m{<($tagName)>(.*?)<\$tagName>}is ) {
1 2 3 4 5 6 7 8 9 10 11 12 13 14
# xml-tags suchen while ( my ( $tagName ) = $xml =~ /<([a-zA-Z0-9\-_]+)>/ ) { # versuche ein tag mit schliessendem tag zu entfernen, # speichere dabei den gefundenen tag-inhalt im hash ab if ( $xml =~ s/<$tagName>(.*?)<\/$tagName>//is ) { $xml{ lc($tagName) } = $1; } # ansonsten loesche startendes tag (da kein ende-tag vorhanden) else { $xml =~ s/<$tagName>//; } }
Guest Ando@pq könntest du aus meinem ersten post den domainnamen entfernen .. Danke :)
<FROM>xxxxxxxxx</FROM>
<ATTACH></ATTACH>
<SUBJECT>xxxxxxxx</SUBJECT>
(.+?)
(.*?)