| @@ 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 |
|
| @@ 728-757 (lines=30) @@ | ||
| 725 | * |
|
| 726 | * @return HtmlDomParser |
|
| 727 | */ |
|
| 728 | public function loadHtmlFile(string $filePath, $libXMLExtraOptions = null): DomParserInterface |
|
| 729 | { |
|
| 730 | // reset |
|
| 731 | self::$domBrokenReplaceHelper = []; |
|
| 732 | ||
| 733 | if ( |
|
| 734 | !\preg_match("/^https?:\/\//i", $filePath) |
|
| 735 | && |
|
| 736 | !\file_exists($filePath) |
|
| 737 | ) { |
|
| 738 | throw new \RuntimeException("File ${filePath} not found"); |
|
| 739 | } |
|
| 740 | ||
| 741 | try { |
|
| 742 | if (\class_exists('\voku\helper\UTF8')) { |
|
| 743 | /** @noinspection PhpUndefinedClassInspection */ |
|
| 744 | $html = UTF8::file_get_contents($filePath); |
|
| 745 | } else { |
|
| 746 | $html = \file_get_contents($filePath); |
|
| 747 | } |
|
| 748 | } catch (\Exception $e) { |
|
| 749 | throw new \RuntimeException("Could not load file ${filePath}"); |
|
| 750 | } |
|
| 751 | ||
| 752 | if ($html === false) { |
|
| 753 | throw new \RuntimeException("Could not load file ${filePath}"); |
|
| 754 | } |
|
| 755 | ||
| 756 | return $this->loadHtml($html, $libXMLExtraOptions); |
|
| 757 | } |
|
| 758 | ||
| 759 | /** |
|
| 760 | * Get the HTML as XML or plain XML if needed. |
|