Code Duplication    Length = 27-27 lines in 3 locations

src/voku/helper/HtmlDomParser.php 1 location

@@ 672-698 (lines=27) @@
669
     *
670
     * @return HtmlDomParser
671
     */
672
    public function loadHtmlFile(string $filePath, $libXMLExtraOptions = null): DomParserInterface
673
    {
674
        if (
675
            !\preg_match("/^https?:\/\//i", $filePath)
676
            &&
677
            !\file_exists($filePath)
678
        ) {
679
            throw new \RuntimeException("File ${filePath} not found");
680
        }
681
682
        try {
683
            if (\class_exists('\voku\helper\UTF8')) {
684
                /** @noinspection PhpUndefinedClassInspection */
685
                $html = UTF8::file_get_contents($filePath);
686
            } else {
687
                $html = \file_get_contents($filePath);
688
            }
689
        } catch (\Exception $e) {
690
            throw new \RuntimeException("Could not load file ${filePath}");
691
        }
692
693
        if ($html === false) {
694
            throw new \RuntimeException("Could not load file ${filePath}");
695
        }
696
697
        return $this->loadHtml($html, $libXMLExtraOptions);
698
    }
699
700
    /**
701
     * @param string $html

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