original_string: public function loadHtmlFile($file)
      {
          $this->saveLocale();
  
          if (!$this->protocol && !$this->baseHost && !$this->basePath) {
              list($this->protocol, $this->baseHost, $this->basePath) = Helpers::explode_url($file);
          }
          $protocol = strtolower($this->protocol);
  
          if ( !in_array($protocol, $this->allowedProtocols) ) {
              throw new Exception("Permission denied on $file. The communication protocol is not supported.");
          }
  
          if (!$this->options->isRemoteEnabled() && ($protocol != "" && $protocol !== "file://")) {
              throw new Exception("Remote file requested, but remote file download is disabled.");
          }
  
          if ($protocol == "" || $protocol === "file://") {
              $realfile = realpath($file);
  
              $chroot = realpath($this->options->getChroot());
              if ($chroot && strpos($realfile, $chroot) !== 0) {
                  throw new Exception("Permission denied on $file. The file could not be found under the directory specified by Options::chroot.");
              }
  
              $ext = strtolower(pathinfo($realfile, PATHINFO_EXTENSION));
              if (!in_array($ext, $this->allowedLocalFileExtensions)) {
                  throw new Exception("Permission denied on $file. This file extension is forbidden");
              }
  
              if (!$realfile) {
                  throw new Exception("File '$file' not found.");
              }
  
              $file = $realfile;
          }
  
          list($contents, $http_response_header) = Helpers::getFileContent($file, $this->httpContext);
          $encoding = 'UTF-8';
  
          // See http://the-stickman.com/web-development/php/getting-http-response-headers-when-using-file_get_contents/
          if (isset($http_response_header)) {
              foreach ($http_response_header as $_header) {
                  if (preg_match("@Content-Type:\s*[\w/]+;\s*?charset=([^\s]+)@i", $_header, $matches)) {
                      $encoding = strtoupper($matches[1]);
                      break;
                  }
              }
          }
  
          $this->restoreLocale();
  
          $this->loadHtml($contents, $encoding);
      }
code: public function loadHtmlFile($file)
      {
          $this->saveLocale();
  
          if (!$this->protocol && !$this->baseHost && !$this->basePath) {
              list($this->protocol, $this->baseHost, $this->basePath) = Helpers::explode_url($file);
          }
          $protocol = strtolower($this->protocol);
  
          if ( !in_array($protocol, $this->allowedProtocols) ) {
              throw new Exception("Permission denied on $file. The communication protocol is not supported.");
          }
  
          if (!$this->options->isRemoteEnabled() && ($protocol != "" && $protocol !== "file://")) {
              throw new Exception("Remote file requested, but remote file download is disabled.");
          }
  
          if ($protocol == "" || $protocol === "file://") {
              $realfile = realpath($file);
  
              $chroot = realpath($this->options->getChroot());
              if ($chroot && strpos($realfile, $chroot) !== 0) {
                  throw new Exception("Permission denied on $file. The file could not be found under the directory specified by Options::chroot.");
              }
  
              $ext = strtolower(pathinfo($realfile, PATHINFO_EXTENSION));
              if (!in_array($ext, $this->allowedLocalFileExtensions)) {
                  throw new Exception("Permission denied on $file. This file extension is forbidden");
              }
  
              if (!$realfile) {
                  throw new Exception("File '$file' not found.");
              }
  
              $file = $realfile;
          }
  
          list($contents, $http_response_header) = Helpers::getFileContent($file, $this->httpContext);
          $encoding = 'UTF-8';
  
          // See http://the-stickman.com/web-development/php/getting-http-response-headers-when-using-file_get_contents/
          if (isset($http_response_header)) {
              foreach ($http_response_header as $_header) {
                  if (preg_match("@Content-Type:\s*[\w/]+;\s*?charset=([^\s]+)@i", $_header, $matches)) {
                      $encoding = strtoupper($matches[1]);
                      break;
                  }
              }
          }
  
          $this->restoreLocale();
  
          $this->loadHtml($contents, $encoding);
      }
code_tokens: public function loadHtmlFile ( $ file ) { $ this -> saveLocale ( ) ; if ( ! $ this -> protocol && ! $ this -> baseHost && ! $ this -> basePath ) { list ( $ this -> protocol , $ this -> baseHost , $ this -> basePath ) = Helpers :: explode_url ( $ file ) ; } $ protocol = strtolower ( $ this -> protocol ) ; if ( ! in_array ( $ protocol , $ this -> allowedProtocols ) ) { throw new Exception ( "Permission denied on $file. The communication protocol is not supported." ) ; } if ( ! $ this -> options -> isRemoteEnabled ( ) && ( $ protocol != "" && $ protocol !== "file://" ) ) { throw new Exception ( "Remote file requested, but remote file download is disabled." ) ; } if ( $ protocol == "" || $ protocol === "file://" ) { $ realfile = realpath ( $ file ) ; $ chroot = realpath ( $ this -> options -> getChroot ( ) ) ; if ( $ chroot && strpos ( $ realfile , $ chroot ) !== 0 ) { throw new Exception ( "Permission denied on $file. The file could not be found under the directory specified by Options::chroot." ) ; } $ ext = strtolower ( pathinfo ( $ realfile , PATHINFO_EXTENSION ) ) ; if ( ! in_array ( $ ext , $ this -> allowedLocalFileExtensions ) ) { throw new Exception ( "Permission denied on $file. This file extension is forbidden" ) ; } if ( ! $ realfile ) { throw new Exception ( "File '$file' not found." ) ; } $ file = $ realfile ; } list ( $ contents , $ http_response_header ) = Helpers :: getFileContent ( $ file , $ this -> httpContext ) ; $ encoding = 'UTF-8' ; // See http://the-stickman.com/web-development/php/getting-http-response-headers-when-using-file_get_contents/ if ( isset ( $ http_response_header ) ) { foreach ( $ http_response_header as $ _header ) { if ( preg_match ( "@Content-Type:\s*[\w/]+;\s*?charset=([^\s]+)@i" , $ _header , $ matches ) ) { $ encoding = strtoupper ( $ matches [ 1 ] ) ; break ; } } } $ this -> restoreLocale ( ) ; $ this -> loadHtml ( $ contents , $ encoding ) ; }
docstring: Loads an HTML file
  Parse errors are stored in the global array _dompdf_warnings.
  
  @param string $file a filename or url to load
  
  @throws Exception
docstring_tokens: Loads an HTML file Parse errors are stored in the global array _dompdf_warnings .