Code Duplication    Length = 27-30 lines in 3 locations

src/voku/helper/XmlDomParser.php 2 locations

@@ 432-458 (lines=27) @@
429
     *
430
     * @return XmlDomParser
431
     */
432
    public function loadHtmlFile(string $filePath, $libXMLExtraOptions = null): DomParserInterface
433
    {
434
        if (
435
            !\preg_match("/^https?:\/\//i", $filePath)
436
            &&
437
            !\file_exists($filePath)
438
        ) {
439
            throw new \RuntimeException("File ${filePath} not found");
440
        }
441
442
        try {
443
            if (\class_exists('\voku\helper\UTF8')) {
444
                /** @noinspection PhpUndefinedClassInspection */
445
                $html = UTF8::file_get_contents($filePath);
446
            } else {
447
                $html = \file_get_contents($filePath);
448
            }
449
        } catch (\Exception $e) {
450
            throw new \RuntimeException("Could not load file ${filePath}");
451
        }
452
453
        if ($html === false) {
454
            throw new \RuntimeException("Could not load file ${filePath}");
455
        }
456
457
        return $this->loadHtml($html, $libXMLExtraOptions);
458
    }
459
460
    /**
461
     * @param string $selector
@@ 496-522 (lines=27) @@
493
     *
494
     * @return XmlDomParser
495
     */
496
    public function loadXmlFile(string $filePath, $libXMLExtraOptions = null): self
497
    {
498
        if (
499
            !\preg_match("/^https?:\/\//i", $filePath)
500
            &&
501
            !\file_exists($filePath)
502
        ) {
503
            throw new \RuntimeException("File ${filePath} not found");
504
        }
505
506
        try {
507
            if (\class_exists('\voku\helper\UTF8')) {
508
                /** @noinspection PhpUndefinedClassInspection */
509
                $xml = UTF8::file_get_contents($filePath);
510
            } else {
511
                $xml = \file_get_contents($filePath);
512
            }
513
        } catch (\Exception $e) {
514
            throw new \RuntimeException("Could not load file ${filePath}");
515
        }
516
517
        if ($xml === false) {
518
            throw new \RuntimeException("Could not load file ${filePath}");
519
        }
520
521
        return $this->loadXml($xml, $libXMLExtraOptions);
522
    }
523
524
    /**
525
     * @param callable      $callback

src/voku/helper/HtmlDomParser.php 1 location

@@ 727-756 (lines=30) @@
724
     *
725
     * @return HtmlDomParser
726
     */
727
    public function loadHtmlFile(string $filePath, $libXMLExtraOptions = null): DomParserInterface
728
    {
729
        // reset
730
        self::$domBrokenReplaceHelper = [];
731
732
        if (
733
            !\preg_match("/^https?:\/\//i", $filePath)
734
            &&
735
            !\file_exists($filePath)
736
        ) {
737
            throw new \RuntimeException("File ${filePath} not found");
738
        }
739
740
        try {
741
            if (\class_exists('\voku\helper\UTF8')) {
742
                /** @noinspection PhpUndefinedClassInspection */
743
                $html = UTF8::file_get_contents($filePath);
744
            } else {
745
                $html = \file_get_contents($filePath);
746
            }
747
        } catch (\Exception $e) {
748
            throw new \RuntimeException("Could not load file ${filePath}");
749
        }
750
751
        if ($html === false) {
752
            throw new \RuntimeException("Could not load file ${filePath}");
753
        }
754
755
        return $this->loadHtml($html, $libXMLExtraOptions);
756
    }
757
758
    /**
759
     * Get the HTML as XML or plain XML if needed.