protected function transform_complex_string( $string, $regex, $transform_type = 'full' ) {
		$output = preg_split( '`([\{\}\$\[\] ])`', $string, -1, \PREG_SPLIT_DELIM_CAPTURE );

		$is_variable = false;
		$has_braces  = false;
		$braces      = 0;

		foreach ( $output as $i => $part ) {
			if ( \in_array( $part, array( '$', '{' ), true ) ) {
				$is_variable = true;
				if ( '{' === $part ) {
					$has_braces = true;
					$braces++;
				}
				continue;
			}

			if ( true === $is_variable ) {
				if ( '[' === $part ) {
					$has_braces = true;
					$braces++;
				}
				if ( \in_array( $part, array( '}', ']' ), true ) ) {
					$braces--;
				}
				if ( false === $has_braces && ' ' === $part ) {
					$is_variable  = false;
					$output[ $i ] = $this->transform( $part, $regex, $transform_type );
				}

				if ( ( true === $has_braces && 0 === $braces ) && false === \in_array( $output[ ( $i + 1 ) ], array( '{', '[' ), true ) ) {
					$has_braces  = false;
					$is_variable = false;
				}
				continue;
			}

			$output[ $i ] = $this->transform( $part, $regex, $transform_type );
		}

		return implode( '', $output );
	}
protected function transform_complex_string( $string, $regex, $transform_type = 'full' ) {
		$output = preg_split( '`([\{\}\$\[\] ])`', $string, -1, \PREG_SPLIT_DELIM_CAPTURE );

		$is_variable = false;
		$has_braces  = false;
		$braces      = 0;

		foreach ( $output as $i => $part ) {
			if ( \in_array( $part, array( '$', '{' ), true ) ) {
				$is_variable = true;
				if ( '{' === $part ) {
					$has_braces = true;
					$braces++;
				}
				continue;
			}

			if ( true === $is_variable ) {
				if ( '[' === $part ) {
					$has_braces = true;
					$braces++;
				}
				if ( \in_array( $part, array( '}', ']' ), true ) ) {
					$braces--;
				}
				if ( false === $has_braces && ' ' === $part ) {
					$is_variable  = false;
					$output[ $i ] = $this->transform( $part, $regex, $transform_type );
				}

				if ( ( true === $has_braces && 0 === $braces ) && false === \in_array( $output[ ( $i + 1 ) ], array( '{', '[' ), true ) ) {
					$has_braces  = false;
					$is_variable = false;
				}
				continue;
			}

			$output[ $i ] = $this->transform( $part, $regex, $transform_type );
		}

		return implode( '', $output );
	}
protected function transform_complex_string ( $ string , $ regex , $ transform_type = 'full' ) { $ output = preg_split ( '`([\{\}\$\[\] ])`' , $ string , - 1 , \ PREG_SPLIT_DELIM_CAPTURE ) ; $ is_variable = false ; $ has_braces = false ; $ braces = 0 ; foreach ( $ output as $ i => $ part ) { if ( \ in_array ( $ part , array ( '$' , '{' ) , true ) ) { $ is_variable = true ; if ( '{' === $ part ) { $ has_braces = true ; $ braces ++ ; } continue ; } if ( true === $ is_variable ) { if ( '[' === $ part ) { $ has_braces = true ; $ braces ++ ; } if ( \ in_array ( $ part , array ( '}' , ']' ) , true ) ) { $ braces -- ; } if ( false === $ has_braces && ' ' === $ part ) { $ is_variable = false ; $ output [ $ i ] = $ this -> transform ( $ part , $ regex , $ transform_type ) ; } if ( ( true === $ has_braces && 0 === $ braces ) && false === \ in_array ( $ output [ ( $ i + 1 ) ] , array ( '{' , '[' ) , true ) ) { $ has_braces = false ; $ is_variable = false ; } continue ; } $ output [ $ i ] = $ this -> transform ( $ part , $ regex , $ transform_type ) ; } return implode ( '' , $ output ) ; }
Transform a complex string which may contain variable extrapolation.

@param string $string         The target string.
@param string $regex          The punctuation regular expression to use.
@param string $transform_type Whether to a partial or complete transform.
Valid values are: 'full', 'case', 'punctuation'.
@return string
Transform a complex string which may contain variable extrapolation .