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

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