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

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

src/voku/helper/SimpleXmlDom.php 1 location

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