@@ 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 |
@@ 813-842 (lines=30) @@ | ||
810 | * |
|
811 | * @return HtmlDomParser |
|
812 | */ |
|
813 | public function loadHtmlFile(string $filePath, $libXMLExtraOptions = null): DomParserInterface |
|
814 | { |
|
815 | // reset |
|
816 | self::$domBrokenReplaceHelper = []; |
|
817 | ||
818 | if ( |
|
819 | !\preg_match("/^https?:\/\//i", $filePath) |
|
820 | && |
|
821 | !\file_exists($filePath) |
|
822 | ) { |
|
823 | throw new \RuntimeException("File ${filePath} not found"); |
|
824 | } |
|
825 | ||
826 | try { |
|
827 | if (\class_exists('\voku\helper\UTF8')) { |
|
828 | /** @noinspection PhpUndefinedClassInspection */ |
|
829 | $html = UTF8::file_get_contents($filePath); |
|
830 | } else { |
|
831 | $html = \file_get_contents($filePath); |
|
832 | } |
|
833 | } catch (\Exception $e) { |
|
834 | throw new \RuntimeException("Could not load file ${filePath}"); |
|
835 | } |
|
836 | ||
837 | if ($html === false) { |
|
838 | throw new \RuntimeException("Could not load file ${filePath}"); |
|
839 | } |
|
840 | ||
841 | return $this->loadHtml($html, $libXMLExtraOptions); |
|
842 | } |
|
843 | ||
844 | /** |
|
845 | * Get the HTML as XML or plain XML if needed. |