@@ 218-248 (lines=31) @@ | ||
215 | * |
|
216 | * @return SimpleHtmlDomInterface|SimpleHtmlDomInterface[]|SimpleHtmlDomNodeInterface |
|
217 | */ |
|
218 | public function getElementsByTagName(string $name, $idx = null) |
|
219 | { |
|
220 | if ($this->node instanceof \DOMElement) { |
|
221 | $nodesList = $this->node->getElementsByTagName($name); |
|
222 | } else { |
|
223 | $nodesList = []; |
|
224 | } |
|
225 | ||
226 | $elements = new SimpleHtmlDomNode(); |
|
227 | ||
228 | foreach ($nodesList as $node) { |
|
229 | $elements[] = new static($node); |
|
230 | } |
|
231 | ||
232 | // return all elements |
|
233 | if ($idx === null) { |
|
234 | if (\count($elements) === 0) { |
|
235 | return new SimpleHtmlDomNodeBlank(); |
|
236 | } |
|
237 | ||
238 | return $elements; |
|
239 | } |
|
240 | ||
241 | // handle negative values |
|
242 | if ($idx < 0) { |
|
243 | $idx = \count($elements) + $idx; |
|
244 | } |
|
245 | ||
246 | // return one element |
|
247 | return $elements[$idx] ?? new SimpleHtmlDomBlank(); |
|
248 | } |
|
249 | ||
250 | /** |
|
251 | * Create a new "HtmlDomParser"-object from the current context. |
@@ 638-664 (lines=27) @@ | ||
635 | * |
|
636 | * @return SimpleHtmlDomInterface|SimpleHtmlDomInterface[]|SimpleHtmlDomNodeInterface |
|
637 | */ |
|
638 | public function getElementsByTagName(string $name, $idx = null) |
|
639 | { |
|
640 | $nodesList = $this->document->getElementsByTagName($name); |
|
641 | ||
642 | $elements = new SimpleHtmlDomNode(); |
|
643 | ||
644 | foreach ($nodesList as $node) { |
|
645 | $elements[] = new SimpleHtmlDom($node); |
|
646 | } |
|
647 | ||
648 | // return all elements |
|
649 | if ($idx === null) { |
|
650 | if (\count($elements) === 0) { |
|
651 | return new SimpleHtmlDomNodeBlank(); |
|
652 | } |
|
653 | ||
654 | return $elements; |
|
655 | } |
|
656 | ||
657 | // handle negative values |
|
658 | if ($idx < 0) { |
|
659 | $idx = \count($elements) + $idx; |
|
660 | } |
|
661 | ||
662 | // return one element |
|
663 | return $elements[$idx] ?? new SimpleHtmlDomNodeBlank(); |
|
664 | } |
|
665 | ||
666 | /** |
|
667 | * Find one node with a CSS selector. |