private function placeholdersToBlocks(array $blocks, $source)
    {
        $usedBlockMap = [];
        $placeholderToBlockMap = [];

        $pattern = '';
        $first = true;
        foreach ($blocks as $blockName => $block) {
            $first ? $first = false : $pattern .= '|';
            $pattern .= \preg_quote($block['placeholder'], '/');

            $placeholderToBlockMap[$block['placeholder']] = $blockName;
        }

        return \preg_replace_callback(
            \sprintf('/(%s)/', $pattern),
            function (array $match) use ($placeholderToBlockMap, &$usedBlockMap) {
                $blockName = $placeholderToBlockMap[$match[0]];

                if (isset($usedBlockMap[$blockName])) {
                    return $this->createRepeatedPlaceholderBlockSyntax($blockName);
                }
                $usedBlockMap[$blockName] = true;

                return $this->createPlaceholderBlockSyntax($blockName);
            },
            $source
        );
    }
private function placeholdersToBlocks(array $blocks, $source)
    {
        $usedBlockMap = [];
        $placeholderToBlockMap = [];

        $pattern = '';
        $first = true;
        foreach ($blocks as $blockName => $block) {
            $first ? $first = false : $pattern .= '|';
            $pattern .= \preg_quote($block['placeholder'], '/');

            $placeholderToBlockMap[$block['placeholder']] = $blockName;
        }

        return \preg_replace_callback(
            \sprintf('/(%s)/', $pattern),
            function (array $match) use ($placeholderToBlockMap, &$usedBlockMap) {
                $blockName = $placeholderToBlockMap[$match[0]];

                if (isset($usedBlockMap[$blockName])) {
                    return $this->createRepeatedPlaceholderBlockSyntax($blockName);
                }
                $usedBlockMap[$blockName] = true;

                return $this->createPlaceholderBlockSyntax($blockName);
            },
            $source
        );
    }
private function placeholdersToBlocks ( array $ blocks , $ source ) { $ usedBlockMap = [ ] ; $ placeholderToBlockMap = [ ] ; $ pattern = '' ; $ first = true ; foreach ( $ blocks as $ blockName => $ block ) { $ first ? $ first = false : $ pattern .= '|' ; $ pattern .= \ preg_quote ( $ block [ 'placeholder' ] , '/' ) ; $ placeholderToBlockMap [ $ block [ 'placeholder' ] ] = $ blockName ; } return \ preg_replace_callback ( \ sprintf ( '/(%s)/' , $ pattern ) , function ( array $ match ) use ( $ placeholderToBlockMap , & $ usedBlockMap ) { $ blockName = $ placeholderToBlockMap [ $ match [ 0 ] ] ; if ( isset ( $ usedBlockMap [ $ blockName ] ) ) { return $ this -> createRepeatedPlaceholderBlockSyntax ( $ blockName ) ; } $ usedBlockMap [ $ blockName ] = true ; return $ this -> createPlaceholderBlockSyntax ( $ blockName ) ; } , $ source ) ; }
Convert placeholders to blocks in the source.

@param array  $blocks
@param string $source

@return string
Convert placeholders to blocks in the source .