code: public function writeUrlWeb($row1, $col1, $row2, $col2, $url)
      {
          $record = 0x01B8; // Record identifier
          $length = 0x00000; // Bytes to follow
  
          // Pack the undocumented parts of the hyperlink stream
          $unknown1 = pack('H*', 'D0C9EA79F9BACE118C8200AA004BA90B02000000');
          $unknown2 = pack('H*', 'E0C9EA79F9BACE118C8200AA004BA90B');
  
          // Pack the option flags
          $options = pack('V', 0x03);
  
          // Convert URL to a null terminated wchar string
          $url = implode("\0", preg_split("''", $url, -1, PREG_SPLIT_NO_EMPTY));
          $url = $url . "\0\0\0";
  
          // Pack the length of the URL
          $url_len = pack('V', strlen($url));
  
          // Calculate the data length
          $length = 0x34 + strlen($url);
  
          // Pack the header data
          $header = pack('vv', $record, $length);
          $data = pack('vvvv', $row1, $row2, $col1, $col2);
  
          // Write the packed data
          $this->append($header . $data . $unknown1 . $options . $unknown2 . $url_len . $url);
  
          return 0;
      }
docs: Used to write http, ftp and mailto hyperlinks.
  The link type ($options) is 0x03 is the same as absolute dir ref without
  sheet. However it is differentiated by the $unknown2 data stream.
  
  @see writeUrl()
  
  @param int $row1 Start row
  @param int $col1 Start column
  @param int $row2 End row
  @param int $col2 End column
  @param string $url URL string
  
  @return int