Code Duplication    Length = 27-31 lines in 3 locations

src/voku/helper/SimpleHtmlDom.php 1 location

@@ 485-515 (lines=31) @@
482
     *
483
     * @return SimpleHtmlDomInterface|SimpleHtmlDomInterface[]|SimpleHtmlDomNodeInterface
484
     */
485
    public function getElementsByTagName(string $name, $idx = null)
486
    {
487
        if ($this->node instanceof \DOMElement) {
488
            $nodesList = $this->node->getElementsByTagName($name);
489
        } else {
490
            $nodesList = [];
491
        }
492
493
        $elements = new SimpleHtmlDomNode();
494
495
        foreach ($nodesList as $node) {
496
            $elements[] = new static($node);
497
        }
498
499
        // return all elements
500
        if ($idx === null) {
501
            if (\count($elements) === 0) {
502
                return new SimpleHtmlDomNodeBlank();
503
            }
504
505
            return $elements;
506
        }
507
508
        // handle negative values
509
        if ($idx < 0) {
510
            $idx = \count($elements) + $idx;
511
        }
512
513
        // return one element
514
        return $elements[$idx] ?? new SimpleHtmlDomBlank();
515
    }
516
517
    /**
518
     * Create a new "HtmlDomParser"-object from the current context.

src/voku/helper/SimpleXmlDom.php 1 location

@@ 459-489 (lines=31) @@
456
     *
457
     * @return SimpleXmlDomInterface|SimpleXmlDomInterface[]|SimpleXmlDomNodeInterface
458
     */
459
    public function getElementsByTagName(string $name, $idx = null)
460
    {
461
        if ($this->node instanceof \DOMElement) {
462
            $nodesList = $this->node->getElementsByTagName($name);
463
        } else {
464
            $nodesList = [];
465
        }
466
467
        $elements = new SimpleXmlDomNode();
468
469
        foreach ($nodesList as $node) {
470
            $elements[] = new static($node);
471
        }
472
473
        // return all elements
474
        if ($idx === null) {
475
            if (\count($elements) === 0) {
476
                return new SimpleXmlDomNodeBlank();
477
            }
478
479
            return $elements;
480
        }
481
482
        // handle negative values
483
        if ($idx < 0) {
484
            $idx = \count($elements) + $idx;
485
        }
486
487
        // return one element
488
        return $elements[$idx] ?? new SimpleXmlDomBlank();
489
    }
490
491
    /**
492
     * @return \DOMNode

src/voku/helper/XmlDomParser.php 1 location

@@ 320-346 (lines=27) @@
317
     *
318
     * @return SimpleXmlDomInterface|SimpleXmlDomInterface[]|SimpleXmlDomNodeInterface
319
     */
320
    public function getElementsByTagName(string $name, $idx = null)
321
    {
322
        $nodesList = $this->document->getElementsByTagName($name);
323
324
        $elements = new SimpleXmlDomNode();
325
326
        foreach ($nodesList as $node) {
327
            $elements[] = new SimpleXmlDom($node);
328
        }
329
330
        // return all elements
331
        if ($idx === null) {
332
            if (\count($elements) === 0) {
333
                return new SimpleXmlDomNodeBlank();
334
            }
335
336
            return $elements;
337
        }
338
339
        // handle negative values
340
        if ($idx < 0) {
341
            $idx = \count($elements) + $idx;
342
        }
343
344
        // return one element
345
        return $elements[$idx] ?? new SimpleXmlDomNodeBlank();
346
    }
347
348
    /**
349
     * Get dom node's outer html.