Code Duplication    Length = 27-30 lines in 3 locations

src/voku/helper/HtmlDomParser.php 1 location

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

src/voku/helper/XmlDomParser.php 2 locations

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