# redirection/4.2.2/models/regex.php

Redirection, version 4.2.2. 56 lines.

- Page: https://pluginprobe.com/plugins/redirection/4.2.2/code/models/regex.php
- Raw: https://pluginprobe.com/plugins/redirection/4.2.2/raw/models/regex.php
- Modified: 2019-02-23T13:21:52+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/redirection/4.2.2/code/models/regex.php#L10-L20`.

```php
<?php

/**
 * Regular expression helper
 */
class Red_Regex {
	private $pattern;
	private $case;

	public function __construct( $pattern, $case_insensitive = false ) {
		$this->pattern = $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;
	}

	/**
	 * 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 ) {
		$result = @preg_replace( $this->get_regex(), $replace_pattern, $target );
		return is_null( $result ) ? $target : $result;
	}

	private function get_regex() {
		$at_escaped = str_replace( '@', '\\@', $this->pattern );
		$case = '';

		if ( $this->is_ignore_case() ) {
			$case = 'i';
		}

		return '@' . $at_escaped . '@' . $case;
	}

	public function is_ignore_case() {
		return $this->case;
	}
}

```
