Code Duplication    Length = 27-31 lines in 3 locations

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.

src/voku/helper/SimpleHtmlDom.php 1 location

@@ 532-562 (lines=31) @@
529
     *
530
     * @return SimpleHtmlDomInterface|SimpleHtmlDomInterface[]|SimpleHtmlDomNodeInterface
531
     */
532
    public function getElementsByTagName(string $name, $idx = null)
533
    {
534
        if ($this->node instanceof \DOMElement) {
535
            $nodesList = $this->node->getElementsByTagName($name);
536
        } else {
537
            $nodesList = [];
538
        }
539
540
        $elements = new SimpleHtmlDomNode();
541
542
        foreach ($nodesList as $node) {
543
            $elements[] = new static($node);
544
        }
545
546
        // return all elements
547
        if ($idx === null) {
548
            if (\count($elements) === 0) {
549
                return new SimpleHtmlDomNodeBlank();
550
            }
551
552
            return $elements;
553
        }
554
555
        // handle negative values
556
        if ($idx < 0) {
557
            $idx = \count($elements) + $idx;
558
        }
559
560
        // return one element
561
        return $elements[$idx] ?? new SimpleHtmlDomBlank();
562
    }
563
564
    /**
565
     * Create a new "HtmlDomParser"-object from the current context.

src/voku/helper/SimpleXmlDom.php 1 location

@@ 506-536 (lines=31) @@
503
     *
504
     * @return SimpleXmlDomInterface|SimpleXmlDomInterface[]|SimpleXmlDomNodeInterface
505
     */
506
    public function getElementsByTagName(string $name, $idx = null)
507
    {
508
        if ($this->node instanceof \DOMElement) {
509
            $nodesList = $this->node->getElementsByTagName($name);
510
        } else {
511
            $nodesList = [];
512
        }
513
514
        $elements = new SimpleXmlDomNode();
515
516
        foreach ($nodesList as $node) {
517
            $elements[] = new static($node);
518
        }
519
520
        // return all elements
521
        if ($idx === null) {
522
            if (\count($elements) === 0) {
523
                return new SimpleXmlDomNodeBlank();
524
            }
525
526
            return $elements;
527
        }
528
529
        // handle negative values
530
        if ($idx < 0) {
531
            $idx = \count($elements) + $idx;
532
        }
533
534
        // return one element
535
        return $elements[$idx] ?? new SimpleXmlDomBlank();
536
    }
537
538
    /**
539
     * @return \DOMNode