package com::oclib::perl::util::String; use com::oclib::perl::lang::Root; our @ISA = "com::oclib::perl::lang::Root"; use strict; use warnings; use utf8; my $string_utf = "Нормализатор utf ©"; use URI::Escape qw(uri_escape_utf8 uri_escape uri_unescape); sub new { my $invocant = shift; my $class = ref($invocant) || $invocant; my $self = { classCreated => "20050927", classCreator => "http://www.oclib.com/", classEditors => "http://www.oclib.com/,http://www.krassotkin.ru/", classHistory => "20070212,20060617,20051012,20050927", classIndexLocation => "http://www.oclib.com/library/com/oclib/perl/util/string/", classLocation => "http://www.oclib.com/library/com/oclib/perl/util/String.pm", className => "String", classNamespace => "com::oclib::perl::util::String", classVersion => "20070212", classVersionIndexLocation => "http://www.oclib.com/library/com/oclib/perl/util/string/20070212/", classVersionLocation => "http://www.oclib.com/library/com/oclib/perl/util/string/20070212/String.pm", debugging => 0, tracing => 0, @_}; bless($self, $class); return $self; } #sub get {my $self = shift; my $name = shift; return $self->{$name};} sub checkCGI { my $self = shift; my $s = $self->normalization(shift); $s =~ s// /g; $s =~ s/<([^>]|\n)*>/ /g; $s =~ s/%/ /g; $s =~ s/;/ /g; $s =~ s/[&`\'\\|"*?~<>^(){}\$\n\r\[\]]+/ /g; #' $s = $self->normalization($s); return $s; } sub checkCGILite { my $self = shift; my $s = $self->normalization(shift); $s =~ s/;/ /g; $s =~ s/[&`\'\\|"*^(){}\$\n\r\[\]]+/ /g; #' $s = $self->normalization($s); return $s; } sub escape { my $self = shift; my $s = shift; if(!(defined($s))) {return "";}; if($s eq "") {return $s;}; return uri_escape_utf8($s); } sub unescape { my $self = shift; my $s = shift; if(!(defined($s))) {return "";}; if($s eq "") {return $s;}; return uri_unescape($s); } sub lowCase { my $self = shift; my $s = shift; return lc($s); } sub upperCase { my $self = shift; my $s = shift; return uc($s); } sub norm { my $self = shift; return $self->normalization(shift); } sub normalization { my $self = shift; my $s = $self->trim(shift); $s =~ s/\s+/ /g; return $s; } sub translitRussianToEnglish { my $self = shift; my $s = $self->trim(shift); # $s =~ s/\x{E0}/a/g; $s =~ s/\x{0430}/a/g; $s =~ s/\x{C1}/a/g; $s =~ s/а/a/g; $s =~ s/А/A/g; $s =~ s/б/b/g; $s =~ s/Б/B/g; $s =~ s/в/v/g; $s =~ s/В/V/g; $s =~ s/г/g/g; $s =~ s/Г/G/g; $s =~ s/д/d/g; $s =~ s/Д/D/g; $s =~ s/е/e/g; $s =~ s/Е/E/g; $s =~ s/ё/jo/g; $s =~ s/Ё/Jo/g; $s =~ s/ж/zh/g; $s =~ s/Ж/Zh/g; $s =~ s/з/z/g; $s =~ s/З/Z/g; $s =~ s/и/i/g; $s =~ s/И/I/g; $s =~ s/й/j/g; $s =~ s/Й/J/g; $s =~ s/к/k/g; $s =~ s/К/K/g; $s =~ s/л/l/g; $s =~ s/Л/L/g; $s =~ s/м/m/g; $s =~ s/М/M/g; $s =~ s/н/n/g; $s =~ s/Н/N/g; $s =~ s/о/o/g; $s =~ s/О/O/g; $s =~ s/п/p/g; $s =~ s/П/P/g; $s =~ s/р/r/g; $s =~ s/Р/R/g; $s =~ s/с/s/g; $s =~ s/С/S/g; $s =~ s/т/t/g; $s =~ s/Т/T/g; $s =~ s/у/u/g; $s =~ s/У/U/g; $s =~ s/ф/f/g; $s =~ s/Ф/F/g; $s =~ s/х/h/g; $s =~ s/Х/H/g; $s =~ s/ц/c/g; $s =~ s/Ц/C/g; $s =~ s/ч/ch/g; $s =~ s/Ч/Ch/g; $s =~ s/ш/sh/g; $s =~ s/Ш/Sh/g; $s =~ s/щ/sch/g; $s =~ s/Щ/Sch/g; $s =~ s/ъ//g; $s =~ s/Ъ//g; $s =~ s/ы/y/g; $s =~ s/Ы/Y/g; $s =~ s/ь//g; $s =~ s/Ь//g; $s =~ s/э/e/g; $s =~ s/Э/E/g; $s =~ s/ю/u/g; $s =~ s/Ю/U/g; $s =~ s/я/ya/g; $s =~ s/Я/Ya/g; return $s; } sub trim { my $self = shift; my $s = shift; if(!(defined($s))) {return "";}; if($s eq "") {return $s;}; $s =~ s/^\s+//; $s =~ s/\s+$//; return $s; } sub urlToPath { my $self = shift; my $s = String->trim(shift); my $r = $s; #print "137: $r\n"; $r =~ s/\/\.\.\//\/_POINT2_\//g; #print "139: $r\n"; $r =~ s/\/\.\//\/_POINT_\//g; #print "141: $r\n"; $r =~ s/\/\//\//g; $r =~ s/\//_SLASH_/g; #print "143: $r\n"; $r =~ s/:/_PP_/g; #print "145: $r\n"; $r = String->escape($r); #print "147: $r\n"; $r =~ s/_SLASH_/\//g; #print "149: $r\n"; $r =~ s/_PP_/:/g; #print "151: $r\n"; $r =~ s/\'/_APF_/g; #' #print "153: $r\n"; $r =~ s/~/_TLD_/g; #print "155: $r\n"; $r =~ s/!/_WAR_/g; #print "157: $r\n"; $r =~ s/\*/_STR_/g; #print "157: $r\n"; $r =~ s/\(/_OSC_/g; #print "161: $r\n"; $r =~ s/\)/_CSC_/g; #print "163: $r\n"; $r =~ s/\[/_OSCC_/g; #print "165: $r\n"; $r =~ s/\]/_CSCC_/g; #print "166: $r\n"; $r =~ s/{/_OSCCC_/g; #print "169: $r\n"; $r =~ s/}/_CSCCC_/g; #print "171: $r\n"; $r =~ s/\/_\//\/_PDCH_\//g; #print "173: $r\n"; $r =~ s/\/-\//\/_TIR_\//g; #print "175: $r\n"; return $r; } sub pathToURL { my $self = shift; my $s = String->trim(shift); my $r = $s; $r =~ s/\/_TIR_\//\/-\//g; $r =~ s/\/_PDCH_\//\/_\//g; $r =~ s/_CSCCC_/}/g; $r =~ s/_OSCCC_/{/g; $r =~ s/_CSCC_/\]/g; $r =~ s/_OSCC_/\[/g; $r =~ s/_CSC_/\)/g; $r =~ s/_OSC_/\(/g; $r =~ s/_STR_/\*/g; $r =~ s/_WAR_/!/g; $r =~ s/_TLD_/~/g; $r =~ s/_APF_/\'/g; #' $r = String->unescape($r); $r =~ s/\/_POINT2_\//\/\.\.\//g; $r =~ s/\/_POINT_\//\/\.\//g; return $r; } 1;