Server : Apache System : Linux pod-100823:apache2_74:v0.5.7 5.4.0-1138-gcp #147~18.04.1-Ubuntu SMP Mon Oct 7 21:46:26 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33.7 Disable Function : apache_child_terminate,apache_get_modules,apache_get_version,apache_getenv,apache_note,apache_setenv,disk_free_space,disk_total_space,diskfreespace,dl,exec,fastcgi_finish_request,link,opcache_compile_file,opcache_get_configuration,opcache_invalidate,opcache_is_script_cached,opcache_reset,passthru,pclose,pcntl_exec,popen,posix_getpid,posix_getppid,posix_getpwuid,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_uname,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate,realpath_cache_get,shell_exec,show_source,symlink,system Directory : /nas/content/live/attorneyexperi/wp-content/plugins/redirection/models/ |
<?php /** * Regular expression helper */ class Red_Regex { private $pattern; private $case; public function __construct( $pattern, $case_insensitive = false ) { $this->pattern = rawurldecode( $pattern ); $this->case = $case_insensitive; } /** * Does $target match the regex pattern, applying case insensitivity if set. * * Note: if the pattern is invalid it will not match * * @param string $target Text to match the regex against. * @return boolean match */ public function is_match( $target ) { return @preg_match( $this->get_regex(), $target, $matches ) > 0; } private function encode_path( $path ) { return str_replace( ' ', '%20', $path ); } private function encode_query( $path ) { return str_replace( ' ', '+', $path ); } /** * Regex replace the current pattern with $replace_pattern, applied to $target * * Note: if the pattern is invalid it will return $target * * @param string $replace_pattern The regex replace pattern. * @param string $target Text to match the regex against. * @return string Replaced text */ public function replace( $replace_pattern, $target ) { $regex = $this->get_regex(); $result = @preg_replace( $regex, $replace_pattern, $target ); if ( is_null( $result ) ) { return $target; } // Space encode the target $split = explode( '?', $result ); if ( count( $split ) === 2 ) { $result = implode( '?', [ $this->encode_path( $split[0] ), $this->encode_query( $split[1] ) ] ); } else { $result = $this->encode_path( $result ); } return $result; } private function get_regex() { $at_escaped = str_replace( '@', '\\@', $this->pattern ); $case = ''; if ( $this->is_ignore_case() ) { $case = 'i'; } return '@' . $at_escaped . '@s' . $case; } public function is_ignore_case() { return $this->case; } }