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

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

src/voku/helper/SimpleXmlDom.php 1 location

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