上面给出的那段编码与采集器导致的编码基本是一致的。
它的原理就是将数据取出来后,先序列化,再进行base64_encode编码,最后是用wordwrap进行折行处理。
其中重要的是base64_encode编码,因水平有限,其他的就不再发表意见了。
一般情况下是用不到这么复制的数据处理的。
exportfile($thevalue, 'robot_'.$thevalue['name']);//$thevalue是一个数组
//导出文件
function exportfile($array, $filename) {
global $_SGLOBAL, $_SCONFIG;
global $_SERVER;
$array['version'] = strip_tags(S_VER);
$time = sgmdate($_SGLOBAL['timestamp']);
$exporttext = "# SupeSite Dump\r\n".
"# Version: SupeSite ".S_VER."\r\n".
"# Time: $time\r\n".
"# From: $_SCONFIG[sitename] (".S_URL.")\r\n".
"#\r\n".
"# This file was BASE64 encoded\r\n".
"#\r\n".
"# SupeSite: http://www.supesite.com\r\n".
"# Please visit our website for latest news about SupeSite\r\n".
"# --------------------------------------------------------\r\n\r\n\r\n".
wordwrap(base64_encode(serialize($array)), 50, "\r\n", 1);
obclean();
header('Content-Encoding: none');
header('Content-Type: '.(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') ? 'application/octetstream' : 'application/octet-stream'));
header('Content-Disposition: attachment; filename="'.$filename.'.txt"');
header('Content-Length: '.strlen($exporttext));
header('Pragma: no-cache');
header('Expires: 0');
echo $exporttext;
exit;
} |