| Server IP : 89.108.64.180 / Your IP : 216.73.217.92 Web Server : Apache/2.4.41 (Ubuntu) System : Linux 89-108-64-180.cloudvps.regruhosting.ru 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 User : www-root ( 1010) PHP Version : 8.0.30 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/www-root/data/www/aravanatula.ru/wp-content/plugins/redirection/models/ |
Upload File : |
<?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;
}
}