simplehtmldom_1_5\simple_html_dom_node::find PHP Method

find() public method

find elements by css selector PaperG - added ability for find to lowercase the value of the selector.
public find ( string $selector, integer | null $idx = null, boolean $lowercase = false ) : simple_html_dom_node[] | simple_html_dom_node | null
$selector string
$idx integer | null
$lowercase boolean
return simple_html_dom_node[] | simple_html_dom_node | null
    function find($selector, $idx = null, $lowercase = false)
    {
        $selectors = $this->parse_selector($selector);
        if (($count = count($selectors)) === 0) {
            return array();
        }
        $found_keys = array();
        // find each selector
        for ($c = 0; $c < $count; ++$c) {
            // The change on the below line was documented on the sourceforge code tracker id 2788009
            // used to be: if (($levle=count($selectors[0]))===0) return array();
            if (($levle = count($selectors[$c])) === 0) {
                return array();
            }
            if (!isset($this->_[HDOM_INFO_BEGIN])) {
                return array();
            }
            $head = array($this->_[HDOM_INFO_BEGIN] => 1);
            // handle descendant selectors, no recursive!
            for ($l = 0; $l < $levle; ++$l) {
                $ret = array();
                foreach ($head as $k => $v) {
                    $n = $k === -1 ? $this->dom->root : $this->dom->nodes[$k];
                    //PaperG - Pass this optional parameter on to the seek function.
                    $n->seek($selectors[$c][$l], $ret, $lowercase);
                }
                $head = $ret;
            }
            foreach ($head as $k => $v) {
                if (!isset($found_keys[$k])) {
                    $found_keys[$k] = 1;
                }
            }
        }
        // sort keys
        ksort($found_keys);
        $found = array();
        foreach ($found_keys as $k => $v) {
            $found[] = $this->dom->nodes[$k];
        }
        // return nth-element or array
        if (is_null($idx)) {
            return $found;
        } else {
            if ($idx < 0) {
                $idx = count($found) + $idx;
            }
        }
        return isset($found[$idx]) ? $found[$idx] : null;
    }