Code Duplication    Length = 27-30 lines in 3 locations

src/voku/helper/XmlDomParser.php 2 locations

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

src/voku/helper/HtmlDomParser.php 1 location

@@ 830-859 (lines=30) @@
827
     *
828
     * @return HtmlDomParser
829
     */
830
    public function loadHtmlFile(string $filePath, $libXMLExtraOptions = null): DomParserInterface
831
    {
832
        // reset
833
        self::$domBrokenReplaceHelper = [];
834
835
        if (
836
            !\preg_match("/^https?:\/\//i", $filePath)
837
            &&
838
            !\file_exists($filePath)
839
        ) {
840
            throw new \RuntimeException("File ${filePath} not found");
841
        }
842
843
        try {
844
            if (\class_exists('\voku\helper\UTF8')) {
845
                /** @noinspection PhpUndefinedClassInspection */
846
                $html = UTF8::file_get_contents($filePath);
847
            } else {
848
                $html = \file_get_contents($filePath);
849
            }
850
        } catch (\Exception $e) {
851
            throw new \RuntimeException("Could not load file ${filePath}");
852
        }
853
854
        if ($html === false) {
855
            throw new \RuntimeException("Could not load file ${filePath}");
856
        }
857
858
        return $this->loadHtml($html, $libXMLExtraOptions);
859
    }
860
861
    /**
862
     * Get the HTML as XML or plain XML if needed.