src/PHPHtmlParser/Selector/Parser.php
public function parseSelectorString(string $selector): array
    {
        $selectors = [];

        $matches = [];
        preg_match_all($this->pattern, trim($selector).' ', $matches, PREG_SET_ORDER);

        // skip tbody
        $result = [];
        foreach ($matches as $match) {
            // default values
            $tag       = strtolower(trim($match[1]));
            $operator  = '=';
            $key       = null;
            $value     = null;
            $noKey     = false;
            $alterNext = false;

            // check for elements that alter the behavior of the next element
            if ($tag == '>') {
                $alterNext = true;
            }

            // check for id selector
            if ( ! empty($match[2])) {
                $key   = 'id';
                $value = $match[2];
            }

            // check for class selector
            if ( ! empty($match[3])) {
                $key   = 'class';
                $value = $match[3];
            }

            // and final attribute selector
            if ( ! empty($match[4])) {
                $key = strtolower($match[4]);
            }
            if ( ! empty($match[5])) {
                $operator = $match[5];
            }
            if ( ! empty($match[6])) {
                $value = $match[6];
            }

            // check for elements that do not have a specified attribute
            if (isset($key[0]) && $key[0] == '!') {
                $key   = substr($key, 1);
                $noKey = true;
            }

            $result[] = [
                'tag'       => $tag,
                'key'       => $key,
                'value'     => $value,
                'operator'  => $operator,
                'noKey'     => $noKey,
                'alterNext' => $alterNext,
            ];
            if (trim($match[7]) == ',') {
                $selectors[] = $result;
                $result      = [];
            }
        }

        // save last results
        if (count($result) > 0) {
            $selectors[] = $result;
        }

        return $selectors;
    }
public function parseSelectorString(string $selector): array
    {
        $selectors = [];

        $matches = [];
        preg_match_all($this->pattern, trim($selector).' ', $matches, PREG_SET_ORDER);

        // skip tbody
        $result = [];
        foreach ($matches as $match) {
            // default values
            $tag       = strtolower(trim($match[1]));
            $operator  = '=';
            $key       = null;
            $value     = null;
            $noKey     = false;
            $alterNext = false;

            // check for elements that alter the behavior of the next element
            if ($tag == '>') {
                $alterNext = true;
            }

            // check for id selector
            if ( ! empty($match[2])) {
                $key   = 'id';
                $value = $match[2];
            }

            // check for class selector
            if ( ! empty($match[3])) {
                $key   = 'class';
                $value = $match[3];
            }

            // and final attribute selector
            if ( ! empty($match[4])) {
                $key = strtolower($match[4]);
            }
            if ( ! empty($match[5])) {
                $operator = $match[5];
            }
            if ( ! empty($match[6])) {
                $value = $match[6];
            }

            // check for elements that do not have a specified attribute
            if (isset($key[0]) && $key[0] == '!') {
                $key   = substr($key, 1);
                $noKey = true;
            }

            $result[] = [
                'tag'       => $tag,
                'key'       => $key,
                'value'     => $value,
                'operator'  => $operator,
                'noKey'     => $noKey,
                'alterNext' => $alterNext,
            ];
            if (trim($match[7]) == ',') {
                $selectors[] = $result;
                $result      = [];
            }
        }

        // save last results
        if (count($result) > 0) {
            $selectors[] = $result;
        }

        return $selectors;
    }
public function parseSelectorString ( string $ selector ) : array { $ selectors = [ ] ; $ matches = [ ] ; preg_match_all ( $ this -> pattern , trim ( $ selector ) . ' ' , $ matches , PREG_SET_ORDER ) ; // skip tbody $ result = [ ] ; foreach ( $ matches as $ match ) { // default values $ tag = strtolower ( trim ( $ match [ 1 ] ) ) ; $ operator = '=' ; $ key = null ; $ value = null ; $ noKey = false ; $ alterNext = false ; // check for elements that alter the behavior of the next element if ( $ tag == '>' ) { $ alterNext = true ; } // check for id selector if ( ! empty ( $ match [ 2 ] ) ) { $ key = 'id' ; $ value = $ match [ 2 ] ; } // check for class selector if ( ! empty ( $ match [ 3 ] ) ) { $ key = 'class' ; $ value = $ match [ 3 ] ; } // and final attribute selector if ( ! empty ( $ match [ 4 ] ) ) { $ key = strtolower ( $ match [ 4 ] ) ; } if ( ! empty ( $ match [ 5 ] ) ) { $ operator = $ match [ 5 ] ; } if ( ! empty ( $ match [ 6 ] ) ) { $ value = $ match [ 6 ] ; } // check for elements that do not have a specified attribute if ( isset ( $ key [ 0 ] ) && $ key [ 0 ] == '!' ) { $ key = substr ( $ key , 1 ) ; $ noKey = true ; } $ result [ ] = [ 'tag' => $ tag , 'key' => $ key , 'value' => $ value , 'operator' => $ operator , 'noKey' => $ noKey , 'alterNext' => $ alterNext , ] ; if ( trim ( $ match [ 7 ] ) == ',' ) { $ selectors [ ] = $ result ; $ result = [ ] ; } } // save last results if ( count ( $ result ) > 0 ) { $ selectors [ ] = $ result ; } return $ selectors ; }
Parses the selector string

@param string $selector
Parses the selector string