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

@@ 711-740 (lines=30) @@
708
     *
709
     * @return HtmlDomParser
710
     */
711
    public function loadHtmlFile(string $filePath, $libXMLExtraOptions = null): DomParserInterface
712
    {
713
        // reset
714
        self::$domBrokenReplaceHelper = [];
715
716
        if (
717
            !\preg_match("/^https?:\/\//i", $filePath)
718
            &&
719
            !\file_exists($filePath)
720
        ) {
721
            throw new \RuntimeException("File ${filePath} not found");
722
        }
723
724
        try {
725
            if (\class_exists('\voku\helper\UTF8')) {
726
                /** @noinspection PhpUndefinedClassInspection */
727
                $html = UTF8::file_get_contents($filePath);
728
            } else {
729
                $html = \file_get_contents($filePath);
730
            }
731
        } catch (\Exception $e) {
732
            throw new \RuntimeException("Could not load file ${filePath}");
733
        }
734
735
        if ($html === false) {
736
            throw new \RuntimeException("Could not load file ${filePath}");
737
        }
738
739
        return $this->loadHtml($html, $libXMLExtraOptions);
740
    }
741
742
    /**
743
     * Get the HTML as XML or plain XML if needed.