Code Duplication    Length = 27-30 lines in 3 locations

src/voku/helper/HtmlDomParser.php 1 location

@@ 860-889 (lines=30) @@
857
     *
858
     * @return HtmlDomParser
859
     */
860
    public function loadHtmlFile(string $filePath, $libXMLExtraOptions = null): DomParserInterface
861
    {
862
        // reset
863
        self::$domBrokenReplaceHelper = [];
864
865
        if (
866
            !\preg_match("/^https?:\/\//i", $filePath)
867
            &&
868
            !\file_exists($filePath)
869
        ) {
870
            throw new \RuntimeException("File ${filePath} not found");
871
        }
872
873
        try {
874
            if (\class_exists('\voku\helper\UTF8')) {
875
                $html = \voku\helper\UTF8::file_get_contents($filePath);
876
            } else {
877
                $html = \file_get_contents($filePath);
878
            }
879
        } catch (\Exception $e) {
880
            throw new \RuntimeException("Could not load file ${filePath}");
881
        }
882
883
        if ($html === false) {
884
            throw new \RuntimeException("Could not load file ${filePath}");
885
        }
886
887
        return $this->loadHtml($html, $libXMLExtraOptions);
888
    }
889
890
    /**
891
     * Get the HTML as XML or plain XML if needed.
892
     *

src/voku/helper/XmlDomParser.php 2 locations

@@ 521-547 (lines=27) @@
518
     *
519
     * @return XmlDomParser
520
     */
521
    public function loadHtmlFile(string $filePath, $libXMLExtraOptions = null): DomParserInterface
522
    {
523
        if (
524
            !\preg_match("/^https?:\/\//i", $filePath)
525
            &&
526
            !\file_exists($filePath)
527
        ) {
528
            throw new \RuntimeException("File ${filePath} not found");
529
        }
530
531
        try {
532
            if (\class_exists('\voku\helper\UTF8')) {
533
                $html = \voku\helper\UTF8::file_get_contents($filePath);
534
            } else {
535
                $html = \file_get_contents($filePath);
536
            }
537
        } catch (\Exception $e) {
538
            throw new \RuntimeException("Could not load file ${filePath}");
539
        }
540
541
        if ($html === false) {
542
            throw new \RuntimeException("Could not load file ${filePath}");
543
        }
544
545
        return $this->loadHtml($html, $libXMLExtraOptions);
546
    }
547
548
    /**
549
     * @param string $selector
550
     * @param int    $idx
@@ 598-624 (lines=27) @@
595
     *
596
     * @return XmlDomParser
597
     */
598
    public function loadXmlFile(string $filePath, $libXMLExtraOptions = null): self
599
    {
600
        if (
601
            !\preg_match("/^https?:\/\//i", $filePath)
602
            &&
603
            !\file_exists($filePath)
604
        ) {
605
            throw new \RuntimeException("File ${filePath} not found");
606
        }
607
608
        try {
609
            if (\class_exists('\voku\helper\UTF8')) {
610
                $xml = \voku\helper\UTF8::file_get_contents($filePath);
611
            } else {
612
                $xml = \file_get_contents($filePath);
613
            }
614
        } catch (\Exception $e) {
615
            throw new \RuntimeException("Could not load file ${filePath}");
616
        }
617
618
        if ($xml === false) {
619
            throw new \RuntimeException("Could not load file ${filePath}");
620
        }
621
622
        return $this->loadXml($xml, $libXMLExtraOptions);
623
    }
624
625
    /**
626
     * @param callable      $callback
627
     * @param \DOMNode|null $domNode