FluentDOM\QualifiedName::isNCName PHP Method

isNCName() private method

Validate string as qualified node name part (namespace or local name)
private isNCName ( string $name, integer $offset, string $fullName = NULL ) : boolean
$name string full QName
$offset integer Offset of NCName part in QName
$fullName string full name used in error message
return boolean
    private function isNCName($name, $offset = 0, $fullName = NULL)
    {
        $nameStartChar = 'A-Z_a-z' . '\\x{C0}-\\x{D6}\\x{D8}-\\x{F6}\\x{F8}-\\x{2FF}\\x{370}-\\x{37D}' . '\\x{37F}-\\x{1FFF}\\x{200C}-\\x{200D}\\x{2070}-\\x{218F}' . '\\x{2C00}-\\x{2FEF}\\x{3001}-\\x{D7FF}\\x{F900}-\\x{FDCF}' . '\\x{FDF0}-\\x{FFFD}\\x{10000}-\\x{EFFFF}';
        $nameChar = $nameStartChar . '\\.\\d\\x{B7}\\x{300}-\\x{36F}\\x{203F}-\\x{2040}';
        if ($offset > 0) {
            $namePart = substr($name, $offset);
        } else {
            $namePart = $name;
            $name = $fullName ?: $namePart;
        }
        if (empty($namePart)) {
            throw new \UnexpectedValueException('Invalid QName "' . $name . '": Missing QName part.');
        } elseif (preg_match('([^' . $nameChar . '-])u', $namePart, $match, PREG_OFFSET_CAPTURE)) {
            //invalid bytes and whitespaces
            $position = (int) $match[0][1];
            throw new \UnexpectedValueException('Invalid QName "' . $name . '": Invalid character at index ' . ($offset + $position) . '.');
        } elseif (preg_match('(^[^' . $nameStartChar . '])u', $namePart)) {
            //first char is a little more limited
            throw new \UnexpectedValueException('Invalid QName "' . $name . '": Invalid character at index ' . $offset . '.');
        }
        return TRUE;
    }