package com::oclib::perl::util::URIParser; use com::oclib::perl::lang::Root; our @ISA = "com::oclib::perl::lang::Root"; use strict; use warnings; use utf8; my $string_utf = "Нормализатор utf ©"; use com::oclib::perl::util::String; my $string = new com::oclib::perl::util::String(); sub new { my $invocant = shift; my $class = ref($invocant) || $invocant; # cgi => CGI my $self = { classCreated => "20050927", classCreator => "http://www.oclib.com/", classEditors => "http://www.oclib.com/,http://www.krassotkin.ru/", classHistory => "20070707,20070212,20060718,20060617,20050927,20051012,20051103", classIndexLocation => "http://www.oclib.com/library/com/oclib/perl/util/uriparser/", classLocation => "http://www.oclib.com/library/com/oclib/perl/util/URIParser.pm", className => "URIParser", classNamespace => "com::oclib::perl::util::URIParser", classVersion => "20070707", classVersionIndexLocation => "http://www.oclib.com/library/com/oclib/perl/util/uriparser/builds/20070707/", classVersionLocation => "http://www.oclib.com/library/com/oclib/perl/util/uriparser/builds/20070707/URIParser.pm", debugging => 0, tracing => 0, cgi => undef, uri => undef, separator => "", @_}; bless($self, $class); return $self; } sub parse { my $self = shift; if($self->{trancing}) {print("URIParser->parse()");}; if(!defined($self->{uri})) {$self->{uri} = $string->trim($ENV{"REQUEST_URI"});}; my $uri = $self->{uri}; $uri =~ /$self->{separator}(\/.*)/g; my $queryString = $string->trim($1); $self->{response} .= "queryString: $queryString
\n"; $queryString =~ s/\\x/%/g; $queryString =~ s/\/x/%/g; # $queryString =~ s/\.+//g; $queryString =~ s/\/+/\//g; $queryString =~ s/\\+/\\/g; if(!($queryString =~ /\/$/)) {$queryString .= "/";}; $self->{response} .= "queryString: $queryString
\n"; if($queryString ne "" && $queryString ne "/") { my $flag = 1; my $c = 0; while($flag && $c < 20) { $queryString =~ /^\/([\w%\-\.!]+)\//; my $key = $string->trim($1); $queryString =~ s/^\/([\w%\-\.!]+)//; if($key ne "") { $queryString =~ /^\/([\w%\-\.!]+)\//; my $value = $string->trim($1); $queryString =~ s/^\/([\w%\-\.!]+)//; $self->{cgi}->param("$key", "$value"); $self->{response} .= "$key = $value
\n"; }; $queryString = $string->trim($queryString); if($queryString eq "" || $queryString eq "/") {$flag = 0;}; $c++; }; }; return 1; } 1;