entries[$name])) { return; } $size = filesize($file); $this->memoryAllocate($size*3); $content = file_get_contents($file); //cleanup file contents // at this time only php files if (substr($file,-4) == '.php') { $content = self::removePHPComment($content); } $unc_len = strlen($content); $crc = crc32($content); $zdata = gzdeflate($content); $c_len = strlen($zdata); unset($content); $mdate = $this->makeDate($mtime); $mtime = $this->makeTime($mtime); # Data descriptor $data_desc = "\x50\x4b\x03\x04". "\x14\x00". # ver needed to extract "\x00\x00". # gen purpose bit flag "\x08\x00". # compression method pack('v',$mtime). # last mod time pack('v',$mdate). # last mod date pack('V',$crc). # crc32 pack('V',$c_len). # compressed filesize pack('V',$unc_len). # uncompressed filesize pack('v',strlen($name)). # length of filename pack('v',0). # extra field length $name. # end of "local file header" segment $zdata. # "file data" segment pack('V',$crc). # crc32 pack('V',$c_len). # compressed filesize pack('V',$unc_len); # uncompressed filesize fwrite($this->fp,$data_desc); unset($zdata); $new_offset = $this->old_offset + strlen($data_desc); # Add to central directory record $cdrec = "\x50\x4b\x01\x02". "\x00\x00". # version made by "\x14\x00". # version needed to extract "\x00\x00". # gen purpose bit flag "\x08\x00". # compression method pack('v',$mtime). # last mod time pack('v',$mdate). # last mod date pack('V',$crc). # crc32 pack('V',$c_len). # compressed filesize pack('V',$unc_len). # uncompressed filesize pack('v',strlen($name)). # length of filename pack('v',0). # extra field length pack('v',0). # file comment length pack('v',0). # disk number start pack('v',0). # internal file attributes pack('V',32). # external file attributes - 'archive' bit set pack('V',$this->old_offset). # relative offset of local header $name; $this->old_offset = $new_offset; $this->ctrl_dir[] = $cdrec; } protected static function removePHPComment($content) { $comment = array(T_COMMENT); if (defined('T_DOC_COMMENT')) { $comment[] = T_DOC_COMMENT; // PHP 5 } if (defined('T_ML_COMMENT')) { $comment[] = T_ML_COMMENT; // PHP 4 } $newStr = ''; $tokens = token_get_all($content); foreach ($tokens as $token) { if (is_array($token)) { if (in_array($token[0],$comment)) { //$newStr .= "\n"; } else { $newStr .= $token[1]; } } else { $newStr .= $token; } } return $newStr; } } ?>