Title: WP_MatchesMapRegex
Published: April 25, 2014
Last modified: May 20, 2026

---

# class WP_MatchesMapRegex {}

## In this article

 * [Methods](https://developer.wordpress.org/reference/classes/wp_matchesmapregex/?output_format=md#methods)
 * [Source](https://developer.wordpress.org/reference/classes/wp_matchesmapregex/?output_format=md#source)
 * [Changelog](https://developer.wordpress.org/reference/classes/wp_matchesmapregex/?output_format=md#changelog)

[ Back to top](https://developer.wordpress.org/reference/classes/wp_matchesmapregex/?output_format=md#wp--skip-link--target)

Helper class to remove the need to use eval to replace $matches[] in query strings.

## 󠀁[Methods](https://developer.wordpress.org/reference/classes/wp_matchesmapregex/?output_format=md#methods)󠁿

| Name | Description | 
| [WP_MatchesMapRegex::__construct](https://developer.wordpress.org/reference/classes/wp_matchesmapregex/__construct/) | constructor | 
| [WP_MatchesMapRegex::_map](https://developer.wordpress.org/reference/classes/wp_matchesmapregex/_map/) | do the actual mapping | 
| [WP_MatchesMapRegex::apply](https://developer.wordpress.org/reference/classes/wp_matchesmapregex/apply/) | Substitute substring matches in subject. | 
| [WP_MatchesMapRegex::callback](https://developer.wordpress.org/reference/classes/wp_matchesmapregex/callback/) | preg_replace_callback hook |

## 󠀁[Source](https://developer.wordpress.org/reference/classes/wp_matchesmapregex/?output_format=md#source)󠁿

    ```php
    #[AllowDynamicProperties]
    class WP_MatchesMapRegex {
    	/**
    	 * store for matches
    	 *
    	 * @var array
    	 */
    	private $_matches;

    	/**
    	 * store for mapping result
    	 *
    	 * @var string
    	 */
    	public $output;

    	/**
    	 * subject to perform mapping on (query string containing $matches[] references
    	 *
    	 * @var string
    	 */
    	private $_subject;

    	/**
    	 * regexp pattern to match $matches[] references
    	 *
    	 * @var string
    	 */
    	public $_pattern = '(\$matches\[[1-9]+[0-9]*\])'; // Magic number.

    	/**
    	 * constructor
    	 *
    	 * @param string $subject subject if regex
    	 * @param array  $matches data to use in map
    	 */
    	public function __construct( $subject, $matches ) {
    		$this->_subject = $subject;
    		$this->_matches = $matches;
    		$this->output   = $this->_map();
    	}

    	/**
    	 * Substitute substring matches in subject.
    	 *
    	 * static helper function to ease use
    	 *
    	 * @param string $subject subject
    	 * @param array  $matches data used for substitution
    	 * @return string
    	 */
    	public static function apply( $subject, $matches ) {
    		$result = new WP_MatchesMapRegex( $subject, $matches );
    		return $result->output;
    	}

    	/**
    	 * do the actual mapping
    	 *
    	 * @return string
    	 */
    	private function _map() {
    		$callback = array( $this, 'callback' );
    		return preg_replace_callback( $this->_pattern, $callback, $this->_subject );
    	}

    	/**
    	 * preg_replace_callback hook
    	 *
    	 * @param array $matches preg_replace regexp matches
    	 * @return string
    	 */
    	public function callback( $matches ) {
    		$index = (int) substr( $matches[0], 9, -1 );
    		return ( isset( $this->_matches[ $index ] ) ? urlencode( $this->_matches[ $index ] ) : '' );
    	}
    }
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-includes/class-wp-matchesmapregex.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/7.0/src/wp-includes/class-wp-matchesmapregex.php#L14)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-includes/class-wp-matchesmapregex.php#L14-L90)

## 󠀁[Changelog](https://developer.wordpress.org/reference/classes/wp_matchesmapregex/?output_format=md#changelog)󠁿

| Version | Description | 
| [2.9.0](https://developer.wordpress.org/reference/since/2.9.0/) | Introduced. |

## User Contributed Notes

You must [log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Fclasses%2Fwp_matchesmapregex%2F)
before being able to contribute a note or feedback.