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