| @@ 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 |
|
| @@ 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 |
|