Leser: 23
1 2 3 4 5 6
$new_url =~ s/\&/&/g; foreach my $sid_string(qw(sessionid lsessionid jsessionid SID PHPSESSID SessionID BV_SessionID osCsid)){ if($new_url =~ m/([?&;]${sid_string}=[^&;]+)/i){ $new_url =~ s/\Q$1\E//g; } }
2010-03-11T20:43:00 pktmWas ist, wenn die Session-ID leer ist? Du könntest auf solch eine URL stoßen: run.cgi?sid=&foo=bar
Da du nach dem = das & ausschließt, dürfte deines nicht mehr funktionieren.
2010-03-11T20:43:00 pktmWarum steckst du die einzelnen Vrainten eigentlich nicht komplett per Disjunktion in die Regex? Also so:
Dann "sparst" du dir die Schleife.
1 2 3
$new_url =~ s/\&/&/g; my $joined=join('|',qw(sessionid lsessionid jsessionid SID PHPSESSID SessionID BV_SessionID osCsid)); $new_url =~ s/[?&;](?:${$joined})=[^&;]+//ig;
1 2 3
$new_url =~ s/\&/&/g; my $joined=join('|',qw(sessionid lsessionid jsessionid SID PHPSESSID SessionID BV_SessionID osCsid)); $new_url =~ s/([?&;])(?:${$joined})=[^&;]+/$1 eq '?'? '?':''/ige;
1 2 3 4 5 6 7 8
use URI; use URI::QueryParam; my $uri = URI->new($new_url); foreach my $sid_string(qw(sessionid lsessionid jsessionid SID PHPSESSID SessionID BV_SessionID osCsid)){ $uri->query_param_delete($sid_string); } print "$uri";