| @@ 637-663 (lines=27) @@ | ||
| 634 | * |
|
| 635 | * @return SimpleHtmlDomInterface|SimpleHtmlDomInterface[]|SimpleHtmlDomNodeInterface |
|
| 636 | */ |
|
| 637 | public function getElementsByTagName(string $name, $idx = null) |
|
| 638 | { |
|
| 639 | $nodesList = $this->document->getElementsByTagName($name); |
|
| 640 | ||
| 641 | $elements = new SimpleHtmlDomNode(); |
|
| 642 | ||
| 643 | foreach ($nodesList as $node) { |
|
| 644 | $elements[] = new SimpleHtmlDom($node); |
|
| 645 | } |
|
| 646 | ||
| 647 | // return all elements |
|
| 648 | if ($idx === null) { |
|
| 649 | if (\count($elements) === 0) { |
|
| 650 | return new SimpleHtmlDomNodeBlank(); |
|
| 651 | } |
|
| 652 | ||
| 653 | return $elements; |
|
| 654 | } |
|
| 655 | ||
| 656 | // handle negative values |
|
| 657 | if ($idx < 0) { |
|
| 658 | $idx = \count($elements) + $idx; |
|
| 659 | } |
|
| 660 | ||
| 661 | // return one element |
|
| 662 | return $elements[$idx] ?? new SimpleHtmlDomNodeBlank(); |
|
| 663 | } |
|
| 664 | ||
| 665 | /** |
|
| 666 | * Find one node with a CSS selector. |
|
| @@ 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. |
|