src/Fixer/Alias/EregToPregFixer.php
protected function applyFix(\SplFileInfo $file, Tokens $tokens)
    {
        $end = $tokens->count() - 1;
        $functionsAnalyzer = new FunctionsAnalyzer();

        foreach (self::$functions as $map) {
            // the sequence is the function name, followed by "(" and a quoted string
            $seq = [[T_STRING, $map[0]], '(', [T_CONSTANT_ENCAPSED_STRING]];

            $currIndex = 0;
            while (null !== $currIndex) {
                $match = $tokens->findSequence($seq, $currIndex, $end, false);

                // did we find a match?
                if (null === $match) {
                    break;
                }

                // findSequence also returns the tokens, but we're only interested in the indexes, i.e.:
                // 0 => function name,
                // 1 => bracket "("
                // 2 => quoted string passed as 1st parameter
                $match = array_keys($match);

                // advance tokenizer cursor
                $currIndex = $match[2];

                if (!$functionsAnalyzer->isGlobalFunctionCall($tokens, $match[0])) {
                    continue;
                }

                // ensure the first parameter is just a string (e.g. has nothing appended)
                $next = $tokens->getNextMeaningfulToken($match[2]);
                if (null === $next || !$tokens[$next]->equalsAny([',', ')'])) {
                    continue;
                }

                // convert to PCRE
                $regexTokenContent = $tokens[$match[2]]->getContent();
                $string = substr($regexTokenContent, 1, -1);
                $quote = $regexTokenContent[0];
                $delim = $this->getBestDelimiter($string);
                $preg = $delim.addcslashes($string, $delim).$delim.'D'.$map[2];

                // check if the preg is valid
                if (!$this->checkPreg($preg)) {
                    continue;
                }

                // modify function and argument
                $tokens[$match[0]] = new Token([T_STRING, $map[1]]);
                $tokens[$match[2]] = new Token([T_CONSTANT_ENCAPSED_STRING, $quote.$preg.$quote]);
            }
        }
    }
protected function applyFix(\SplFileInfo $file, Tokens $tokens)
    {
        $end = $tokens->count() - 1;
        $functionsAnalyzer = new FunctionsAnalyzer();

        foreach (self::$functions as $map) {
            // the sequence is the function name, followed by "(" and a quoted string
            $seq = [[T_STRING, $map[0]], '(', [T_CONSTANT_ENCAPSED_STRING]];

            $currIndex = 0;
            while (null !== $currIndex) {
                $match = $tokens->findSequence($seq, $currIndex, $end, false);

                // did we find a match?
                if (null === $match) {
                    break;
                }

                // findSequence also returns the tokens, but we're only interested in the indexes, i.e.:
                // 0 => function name,
                // 1 => bracket "("
                // 2 => quoted string passed as 1st parameter
                $match = array_keys($match);

                // advance tokenizer cursor
                $currIndex = $match[2];

                if (!$functionsAnalyzer->isGlobalFunctionCall($tokens, $match[0])) {
                    continue;
                }

                // ensure the first parameter is just a string (e.g. has nothing appended)
                $next = $tokens->getNextMeaningfulToken($match[2]);
                if (null === $next || !$tokens[$next]->equalsAny([',', ')'])) {
                    continue;
                }

                // convert to PCRE
                $regexTokenContent = $tokens[$match[2]]->getContent();
                $string = substr($regexTokenContent, 1, -1);
                $quote = $regexTokenContent[0];
                $delim = $this->getBestDelimiter($string);
                $preg = $delim.addcslashes($string, $delim).$delim.'D'.$map[2];

                // check if the preg is valid
                if (!$this->checkPreg($preg)) {
                    continue;
                }

                // modify function and argument
                $tokens[$match[0]] = new Token([T_STRING, $map[1]]);
                $tokens[$match[2]] = new Token([T_CONSTANT_ENCAPSED_STRING, $quote.$preg.$quote]);
            }
        }
    }
protected function applyFix ( \ SplFileInfo $ file , Tokens $ tokens ) { $ end = $ tokens -> count ( ) - 1 ; $ functionsAnalyzer = new FunctionsAnalyzer ( ) ; foreach ( self :: $ functions as $ map ) { // the sequence is the function name, followed by "(" and a quoted string $ seq = [ [ T_STRING , $ map [ 0 ] ] , '(' , [ T_CONSTANT_ENCAPSED_STRING ] ] ; $ currIndex = 0 ; while ( null !== $ currIndex ) { $ match = $ tokens -> findSequence ( $ seq , $ currIndex , $ end , false ) ; // did we find a match? if ( null === $ match ) { break ; } // findSequence also returns the tokens, but we're only interested in the indexes, i.e.: // 0 => function name, // 1 => bracket "(" // 2 => quoted string passed as 1st parameter $ match = array_keys ( $ match ) ; // advance tokenizer cursor $ currIndex = $ match [ 2 ] ; if ( ! $ functionsAnalyzer -> isGlobalFunctionCall ( $ tokens , $ match [ 0 ] ) ) { continue ; } // ensure the first parameter is just a string (e.g. has nothing appended) $ next = $ tokens -> getNextMeaningfulToken ( $ match [ 2 ] ) ; if ( null === $ next || ! $ tokens [ $ next ] -> equalsAny ( [ ',' , ')' ] ) ) { continue ; } // convert to PCRE $ regexTokenContent = $ tokens [ $ match [ 2 ] ] -> getContent ( ) ; $ string = substr ( $ regexTokenContent , 1 , - 1 ) ; $ quote = $ regexTokenContent [ 0 ] ; $ delim = $ this -> getBestDelimiter ( $ string ) ; $ preg = $ delim . addcslashes ( $ string , $ delim ) . $ delim . 'D' . $ map [ 2 ] ; // check if the preg is valid if ( ! $ this -> checkPreg ( $ preg ) ) { continue ; } // modify function and argument $ tokens [ $ match [ 0 ] ] = new Token ( [ T_STRING , $ map [ 1 ] ] ) ; $ tokens [ $ match [ 2 ] ] = new Token ( [ T_CONSTANT_ENCAPSED_STRING , $ quote . $ preg . $ quote ] ) ; } } }
{@inheritdoc}
{