yii\helpers\BaseFileHelper::parseExcludePattern PHP Method

parseExcludePattern() private static method

Processes the pattern, stripping special characters like / and ! from the beginning and settings flags instead.
private static parseExcludePattern ( string $pattern, boolean $caseSensitive ) : array
$pattern string
$caseSensitive boolean
return array with keys: (string) pattern, (int) flags, (int|bool) firstWildcard
    private static function parseExcludePattern($pattern, $caseSensitive)
    {
        if (!is_string($pattern)) {
            throw new InvalidParamException('Exclude/include pattern must be a string.');
        }
        $result = ['pattern' => $pattern, 'flags' => 0, 'firstWildcard' => false];
        if (!$caseSensitive) {
            $result['flags'] |= self::PATTERN_CASE_INSENSITIVE;
        }
        if (!isset($pattern[0])) {
            return $result;
        }
        if ($pattern[0] === '!') {
            $result['flags'] |= self::PATTERN_NEGATIVE;
            $pattern = StringHelper::byteSubstr($pattern, 1, StringHelper::byteLength($pattern));
        }
        if (StringHelper::byteLength($pattern) && StringHelper::byteSubstr($pattern, -1, 1) === '/') {
            $pattern = StringHelper::byteSubstr($pattern, 0, -1);
            $result['flags'] |= self::PATTERN_MUSTBEDIR;
        }
        if (strpos($pattern, '/') === false) {
            $result['flags'] |= self::PATTERN_NODIR;
        }
        $result['firstWildcard'] = self::firstWildcardInPattern($pattern);
        if ($pattern[0] === '*' && self::firstWildcardInPattern(StringHelper::byteSubstr($pattern, 1, StringHelper::byteLength($pattern))) === false) {
            $result['flags'] |= self::PATTERN_ENDSWITH;
        }
        $result['pattern'] = $pattern;
        return $result;
    }