Code Duplication    Length = 27-31 lines in 3 locations

src/voku/helper/SimpleHtmlDom.php 1 location

@@ 509-539 (lines=31) @@
506
     *
507
     * @return SimpleHtmlDomInterface|SimpleHtmlDomInterface[]|SimpleHtmlDomNodeInterface
508
     */
509
    public function getElementsByTagName(string $name, $idx = null)
510
    {
511
        if ($this->node instanceof \DOMElement) {
512
            $nodesList = $this->node->getElementsByTagName($name);
513
        } else {
514
            $nodesList = [];
515
        }
516
517
        $elements = new SimpleHtmlDomNode();
518
519
        foreach ($nodesList as $node) {
520
            $elements[] = new static($node);
521
        }
522
523
        // return all elements
524
        if ($idx === null) {
525
            if (\count($elements) === 0) {
526
                return new SimpleHtmlDomNodeBlank();
527
            }
528
529
            return $elements;
530
        }
531
532
        // handle negative values
533
        if ($idx < 0) {
534
            $idx = \count($elements) + $idx;
535
        }
536
537
        // return one element
538
        return $elements[$idx] ?? new SimpleHtmlDomBlank();
539
    }
540
541
    /**
542
     * Create a new "HtmlDomParser"-object from the current context.

src/voku/helper/SimpleXmlDom.php 1 location

@@ 483-513 (lines=31) @@
480
     *
481
     * @return SimpleXmlDomInterface|SimpleXmlDomInterface[]|SimpleXmlDomNodeInterface
482
     */
483
    public function getElementsByTagName(string $name, $idx = null)
484
    {
485
        if ($this->node instanceof \DOMElement) {
486
            $nodesList = $this->node->getElementsByTagName($name);
487
        } else {
488
            $nodesList = [];
489
        }
490
491
        $elements = new SimpleXmlDomNode();
492
493
        foreach ($nodesList as $node) {
494
            $elements[] = new static($node);
495
        }
496
497
        // return all elements
498
        if ($idx === null) {
499
            if (\count($elements) === 0) {
500
                return new SimpleXmlDomNodeBlank();
501
            }
502
503
            return $elements;
504
        }
505
506
        // handle negative values
507
        if ($idx < 0) {
508
            $idx = \count($elements) + $idx;
509
        }
510
511
        // return one element
512
        return $elements[$idx] ?? new SimpleXmlDomBlank();
513
    }
514
515
    /**
516
     * @return \DOMNode

src/voku/helper/XmlDomParser.php 1 location

@@ 357-383 (lines=27) @@
354
     *
355
     * @return SimpleXmlDomInterface|SimpleXmlDomInterface[]|SimpleXmlDomNodeInterface
356
     */
357
    public function getElementsByTagName(string $name, $idx = null)
358
    {
359
        $nodesList = $this->document->getElementsByTagName($name);
360
361
        $elements = new SimpleXmlDomNode();
362
363
        foreach ($nodesList as $node) {
364
            $elements[] = new SimpleXmlDom($node);
365
        }
366
367
        // return all elements
368
        if ($idx === null) {
369
            if (\count($elements) === 0) {
370
                return new SimpleXmlDomNodeBlank();
371
            }
372
373
            return $elements;
374
        }
375
376
        // handle negative values
377
        if ($idx < 0) {
378
            $idx = \count($elements) + $idx;
379
        }
380
381
        // return one element
382
        return $elements[$idx] ?? new SimpleXmlDomNodeBlank();
383
    }
384
385
    /**
386
     * Get dom node's outer html.