关于“PHP彩蛋”的说法也许很多老PHPer已经都知道或听说了,好像是早在PHP4版本的时候就有彩蛋了,挺好玩儿的,可能近年来逐渐被人们遗忘了,其实彩蛋功能在PHP脚本引擎默认情况下是开启。
下面就用Discuz官方论坛做一下测试:
http://www.discuz.net/?=PHPE9568F34-D428-11d2-A769-00AA001ACF42
http://www.discuz.net/?=PHPE9568F35-D428-11d2-A769-00AA001ACF42
http://www.discuz.net/?=PHPE9568F36-D428-11d2-A769-00AA001ACF42
http://www.discuz.net/?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000
如上4个链接加红色的部分是PHP源码/ext/standard/info.h中定义的GUID值,如下图所示
关于PHP彩蛋这个玩法已经被国外的某些Web漏洞扫描器(例如:HP WebInspect)所使用了,用其来探测被扫描的网站使用的是何种Web开发语言。其实在渗透测试过程中经常遇见某些网站难以辨别出使用了何种Web开发语言,因为有些网站采用动态脚本生成纯静态HTML页或者是采用URL重写实现伪静态页面,如果网站使用的是PHP开发的话,可以尝试使用彩蛋的探测法,在很多情况下可以一针见血的鉴定出来,因为默认情况下彩蛋的功能在php.ini中是开启的,当然如果不想让别人通过彩蛋的方式来获取网站的敏感信息的话,那就在php.ini中将expose_php = Off即可!
看完上面这些可能有些人会说既然php.ini中的expose_php = On,那么直接抓包看看http头信息不就OK了,可是某些大站点Web服务器的前面都是有反向代理服务器的,所以还不能完全依赖于捕获http头中的信息。
mysql密码找回
1、cmd进入命令行,切换到mysql的安装目录(本机mysql安装路径D:\MySQL)
验证win7 win8是否激活的方法
方法一.直接打开WIN7 Activation点击”点击验证”(推荐);
方法二.在”运行”里输入 slmgr.vbs -dli 并回车;
方法二.在”运行”里输入 slmgr.vbs -xpr 并回车;
方法二.在”运行”里输入 winver 并回车;
方法四.在”运行”里输入 slmgr.vbs -dlv 并回车;
方法五.右键我的电脑属性 查看是否处于激活状态.
完美去掉Discuz x1.5中powered by discuz!
标题中的版权
在原来的discuz X1版本中,标题中去掉“Powered by Discuz!”版权标识很容易,只需要修改模板文件的头部公用文件,将[‘bbname’] – <!–{/if}–> Powered by Discuz!</title> 中红色部分去掉即可。
但是discuz X1.5直接把- Powered by Discuz!中的 – 放在了变量里,所以删除后,标题一句话结束后会有一个小 – 尾巴,对搜索引擎很不友好,所以也有一个好的办法完美解决,即:
打开\template\default\common\header_common.htm文件,找到<title><!–{if !empty($navtitle)}–>$navtitle – <!–{/if}–><!–{if empty
($nobbname)}–> $_G[‘setting’][‘bbname’] – <!–{/if}–> Powered by Discuz!</title>
更新缓存即可。
关于apache的域名重定向
同志们以后有可能用到域名301重定向,这个是apache的一般配置
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^coolaj.cn$
RewriteRule ^(.*)$ http://www.coolaj.cn$1 [R=301,L]
</IfModule>
这个的意思是吧所有coolaj.cn的请求 301重定向到www.coolaj.cn
这个的前提是apache要开启mod_rewrite(apache的一个模块,是一个严格的Apache配置文件)
详情查看百度百科:http://baike.baidu.com/view/5016366.html?wtp=tt
MySQL复制表结构和内容到另一张表中的SQL
1.复制表结构及数据到新表
CREATE TABLE 新表
SELECT * FROM 旧表
2.只复制表结构到新表
CREATE TABLE 新表
SELECT * FROM 旧表 WHERE 1=2
即:让WHERE条件不成立.
方法二:(低版本的mysql不支持,mysql4.0.25 不支持,mysql5已经支持了)
CREATE TABLE 新表
LIKE 旧表
3.复制旧表的数据到新表(假设两个表结构一样)
INSERT INTO 新表
SELECT * FROM 旧表
4.复制旧表的数据到新表(假设两个表结构不一样)
INSERT INTO 新表(字段1,字段2,…….)
SELECT 字段1,字段2,…… FROM 旧表
php采集程序
其实,采集程序最简单的思路就是:获取页面代码——分析代码——获取需要的部分——写入数据库
对于采集程序来说,使用PHP来写的话,其实不算太好的,因为PHP并不支持多线程,对于采集来说,若没有多线程,将会是非常痛苦的一件事
不过可以使用frame等来设置同时几个页面一起采集,这样就能增加速度了,在这里我不讨论怎么多线程,我只说怎么用PHP来进行简单的采集
先确定采集目标:http://cn.jokes.yahoo.com/jok/index.html
这是雅虎的笑话栏目,我就以这个来进行讲解吧
首先分析一下网页,可以知道连接形式为:<img src=”http://cn.yimg.com/i/cn/px_ar.gif” width=5 height=12 border=0 hspace=5><a href=”http://cn.jokes.yahoo.com/07-07-/55/27lot.html” target=_blank><big>头发与智慧</big></a>
使用正则表达式将它表示出来为:/hspace=5><a href=”http://cn.jokes.yahoo.com/(.*).html” target=_blank>/isU
书写PHP代码:
代码
// 采集首页地址
$url = “<a href=\”http://cn.jokes.yahoo.com/jok/index.html\”>http://cn.jokes.yahoo.com/jok/index.html</a>”;
// 获取页面代码
$r = file_get_contents($url);
// 设置匹配正则
$preg = ‘/hspace=5><a href=”http://cn.jokes.yahoo.com/(.*).html” target=_blank>/isU’;
// 进行正则搜索
preg_match_all($preg, $r, $title);
通过上面的代码,$title[1][num]就是连接的地址了,接着分析内容页,得到内容匹配正则为:/<div id=”newscontent”>(.*)</div>/isU
继续写代码:
代码
// 计算标题数量
$count = count($title[1]);
// 通过标题数量进行内容采集
for($i=0;$i<$count;$i++) {
// 设置内容页地址
$jurl = “<a href=\”http://cn.jokes.yahoo.com/\”>http://cn.jokes.yahoo.com/</a>” . $title[1][$i] . “.html”;
// 获取内容页代码
$c = file_get_contents($jurl);
// 设置内容页匹配正则
$p = ‘/<div id=”newscontent”>(.*)</div>/isU’;
// 进行正则匹配搜索
preg_match($p, $c, $content);
// 输出标题
echo $title[1][$i] . ”
“;
// 输出内容
echo $content[$i];
}
这样,一个简单的采集工具就写出来了,其他的功能只需要再进一步的完善就可以了
完整代码:
<?php // 采集首页地址 $url = "<a href=\"http://cn.jokes.yahoo.com/jok/index.html\">http://cn.jokes.yahoo.com/jok/index.html</a>"; // 获取页面代码 $r = file_get_contents($url); // 设置匹配正则 $preg = '/hspace=5><a href="http://cn.jokes.yahoo.com/(.*).html" class=list target=_blank>/isU'; // 进行正则搜索 preg_match_all($preg, $r, $title); // 计算标题数量 $count = count($title[1]); // 通过标题数量进行内容采集 for($i=0;$i<$count;$i++) { // 设置内容页地址 $jurl = "<a href=\"http://cn.jokes.yahoo.com/\">http://cn.jokes.yahoo.com/</a>" . $title[1][$i] . ".html"; // 获取内容页代码 $c = file_get_contents($jurl); // 设置内容页匹配正则 $p = '/<div id="newscontent">(.*)</div>/isU'; // 进行正则匹配搜索 preg_match($p, $c, $content); // 输出标题 echo $title[1][$i] . " "; // 输出内容 echo $content[$i]; } ?>
ucenter创始人密码忘了解决方法
打开uc下面/data/config.inc.php文件
里面有
define(‘UC_FOUNDERPW’, ‘924a2bd32289075d8055e7e30261dfb1’);
define(‘UC_FOUNDERSALT’, ‘116414’);
记下116414这个值,然后
用php输出下面的一个代码
$ucfounderpw= md5(md5($ucfounderpw).$ucsalt);
其中$ucsalt就是116414(这个根据您的需要而定)
$ucfounderpw是您要设置的密码。
得到的$ucfounderpw替换
define(‘UC_FOUNDERPW’, ‘924a2bd32289075d8055e7e30261dfb1’);
这个里面的924a2bd32289075d8055e7e30261dfb1就可以了。
还有另外一种方法,将以下代码保存为PHP,传至UC根目录,运行即可
<?php define(ROOT_DIR,dirname(__FILE__)."/"); if(!file_exists('./data/config.inc.php') || !is_writeable('./data')){ $isucdir= 0; echo 'UCenter创始人密码重置工具必须放在UCenter根目录下才能正常使用.'; exit; }else{ $isucdir = 1; } $info=""; setucadministrator(); function setucadministrator(){ global $isucdir; global $info; if($_POST['setucsubmit']){ if($isucdir){ $configfile = ROOT_DIR."./data/config.inc.php"; $uc_password = $_POST["uc_password"]; $salt = substr(uniqid(rand()), 0, 6); if(!$uc_password){ $info = "密码不能为空"; }else{ $md5_uc_password = md5(md5($uc_password).$salt); $config = file_get_contents($configfile); $config = preg_replace("/define\('UC_FOUNDERSALT',\s*'.*?'\);/i", "define('UC_FOUNDERSALT', '$salt');", $config); $config = preg_replace("/define\('UC_FOUNDERPW',\s*'.*?'\);/i", "define('UC_FOUNDERPW', '$md5_uc_password');", $config); $fp = @fopen($configfile, 'w'); @fwrite($fp, $config); @fclose($fp); $info = "UCenter创始人密码更改成功为:$uc_password"; } }else{ $info = "本程序文件放置在UCenter跟目录,才能通过程序修改UCenter创始人管理员的密码<br />"; } } templates("setucadministrator"); } function errorpage($message,$title = '',$isheader = 1,$isfooter = 1){ $message = "<h4>$title</h4><br><br><table><tr><th>提示信息</th></tr><tr><td>$message</td></tr></table>"; echo $message; exit; } function templates($tpl){ switch ($tpl){ case "header": echo '<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>UCenter 创始人密码更改工具</title> <style type="text/css"> <!-- body {font-family: Arial, Helvetica, sans-serif, "宋体";font-size: 12px;color:#000;line-height: 120%;padding:0;margin:0;background:#DDE0FF;overflow-x:hidden;word-break:break-all;white-space:normal;scrollbar-3d-light-color:#606BFF;scrollbar-highlight-color:#E3 EFF9;scrollbar-face-color:#CEE3F4;scrollbar-arrow-color:#509AD8;scrollbar-shadow-color:#F0F1FF;scrollbar-base-color:#CEE3F4;} a:hover {color:#60F;} ul {padding:2px 0 10px 0;margin:0;} textarea,table,td,th,select{border:1px solid #868CFF;border-collapse:collapse;} input{margin:10px 0 0px 30px;border-width:1px;border-style:solid;border-color:#FFF #64A7DD #64A7DD #FFF;padding:2px 8px;background:#E3EFF9;} input.radio,input.checkbox,input.textinput,input.specialsubmit {margin:0;padding:0;border:0;padding:0;background:none;} input.textinput,input.specialsubmit {border:1px solid #AFD2ED;background:#FFF;height:24px;} input.textinput {padding:4px 0;} input.specialsubmit {border-color:#FFF #64A7DD #64A7DD #FFF;background:#E3EFF9;padding:0 5px;} option {background:#FFF;} select {background:#F0F1FF;} #header {height:60px;width:100%;padding:0;margin:0;} h2 {font-size:24px;font-weight:bold;position:absolute;top:24px;left:20px;padding:10px;margin:0;} h3 {font-size:14px;position:absolute;top:28px;right:20px;padding:10px;margin:0;} #content {height:510px;background:#F0F1FF;overflow-x:hidden;z-index:1000;} #nav {top:60px;left:0;height:510px;width:180px;border-right:1px solid #DDE0FF;position:absolute;z-index:2000;} #nav ul {padding:0 10px;padding-top:30px;} #nav li {list-style:none;} #nav li a {font-size:14px;line-height:180%;font-weight:400;color:#000;} #nav li a:hover {color:#60F;} #textcontent {padding-left:200px;height:510px;width:100%;line-height:160%;overflow-y:auto;overflow-x:hidden;} h4,h5,h6 {padding:4px;font-size:16px;font-weight:bold;margin-top:20px;margin-bottom:5px;color:#006;} h5,h6 {font-size:14px;color:#000;} h6 {color:#F00;padding-top:5px;margin-top:0;} .specialdiv {width:70%;border:1px dashed #C8CCFF;padding:0 5px;margin-top:20px;background:#F9F9FF;} #textcontent ul {margin-left:30px;} textarea {width:78%;height:320px;text-align:left;border-color:#AFD2ED;} select {border-color:#AFD2ED;} table {width:74%;font-size:12px;margin-left:18px;margin-top:10px;} table.specialtable,table.specialtable td {border:0;} td,th {padding:5px;text-align:left;} caption {font-weight:bold;padding:8px 0;color:#3544FF;text-align:left;} th {background:#D9DCFF;font-weight:600;} td.specialtd {text-align:left;} .specialtext {background:#FCFBFF;margin-top:20px;padding:5px 40px;width:64.5%;margin-bottom:10px;color:#006;} #footer p {padding:0 5px;text-align:center;} --> </style> </head> <body> <div id="content"> <div id="textcontent">'; break; case "footer": echo ' </div></div> <div id="footer"><p>UCenter 创始人密码更改工具 版权所有 ©2001-2007 <a href="http://www.comsenz.com" style="color: #888888; text-decoration: none"> 康盛创想(北京)科技有限公司 Comsenz Inc.</a></font></td></tr><tr style="font-size: 0px; line-height: 0px; spacing: 0px; padding: 0px; background-color: #698CC3"> </p></div> </body> </html>'; exit; break; case "setucadministrator": templates("header"); if(!empty($_POST['setucsubmit'])){ echo "<h5>UCenter 创始人密码更改工具</h5><h5> <font color=red>使用完毕后请及时删除本文件,以免给您造成不必要的损失</font></h5>"; echo '<form action="?action=setadmin" method="post"><input type="hidden" name="action" value="login" />'; global $info; errorpage($info,'',0,0); echo '</form>'; }else{ echo '<form action="?action=setucadministrator" method="post"> <h5>UCenter 创始人密码更改工具</h5> <h5> <font color=red>使用完毕后请及时删除本文件,以免给您造成不必要的损失</font></h5> <table> <tr><th width="30%">用户名</th><td width="70%"><input class="textinput" readonly="readonly" disabled type="text" name="username" size="25" maxlength="40" value="UCenter Administrator"></td></tr> <tr><th width="30%">请输入密码</th><td width="70%"><input class="textinput" type="text" name="uc_password" size="25"></td></tr> </table> <input type="submit" name="setucsubmit" value="提 交"> </form>'; } templates("footer"); break; } } ?>
JS实现div左右自动滚动(可设置滚动高度,速度,停留时间)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";> <html xmlns="http://www.w3.org/1999/xhtml";> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>JS实现div自动滚动</title> <style> .ylp-show div{height:20px;} </style> </head> <body> <div id="show" style="overflow:hidden;height:40px;" class="ylp-show"> <div>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1</div> <div>bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb2</div> <div>ccccccccccccccccccccccccccccccccccccccccccccc3</div> <div>ddddddddddddddddddddddddddddddddddddddddddddd4</div> <div>eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee5</div> <div>fffffffffffffffffffffffffffffffffffffffffffff6</div> <div>ggggggggggggggggggggggggggggggggggggggggggggg7</div> </div> <script> function startmarquee(lh,speed,delay){ var t; var oHeight = 210; /**//** div的高度 **/ var p=false; var o=document.getElementById("show"); var preTop = 0; o.scrollTop = 0; function start(){ t=setInterval(scrolling,speed); o.scrollTop += 1; } function scrolling(){ if(o.scrollTop%lh!=0 && o.scrollTop%(o.scrollHeight-oHeight-1)!=0){ preTop = o.scrollTop; o.scrollTop+=1; if(preTop >= o.scrollHeight || preTop==o.scrollTop){ o.scrollTop = 0; } }else{ clearInterval(t); setTimeout(start,delay); } } setTimeout(start,delay); } startmarquee(20,20,1500); /**//**startmarquee(一次滚动高度,速度,停留时间);**/ </script> </body> </html>
PHP导入导出Excel方法小结
基本上导出的文件分为两种:
1:类Excel格式,这个其实不是传统意义上的Excel文件,只是因为Excel的兼容能力强,能够正确打开而已。修改这种文件后再保存,通常会提示你是否要转换成Excel文件。
优点:简单。
缺点:难以生成格式,如果用来导入需要自己分别编写相应的程序。
2:Excel格式,与类Excel相对应,这种方法生成的文件更接近于真正的Excel格式。
如果导出中文时出现乱码,可以尝试将字符串转换成gb2312,例如下面就把$yourStr从utf-8转换成了gb2312:
$yourStr = mb_convert_encoding(“gb2312”, “UTF-8”, $yourStr);
下面详细列举几种方法。
一、PHP导出Excel
1:第一推荐无比风骚的PHPExcel,官方网站:http://www.codeplex.com/PHPExcel
导入导出都成,可以导出office2007格式,同时兼容2003。
下载下来的包中有文档和例子,大家可以自行研究。
抄段例子出来:
<?php
/**
* PHPExcel
*
* Copyright (C) 2006 – 2007 PHPExcel
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* @category PHPExcel
* @package PHPExcel
* @copyright Copyright (c) 2006 – 2007 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/lgpl.txt
* @version 1.5.0, 2007-10-23
*/
/** Error reporting */
error_reporting(E_ALL);
/** Include path **/
set_include_path(get_include_path() . PATH_SEPARATOR . ‘../Classes/’);
/** PHPExcel */
include ‘PHPExcel.php’;
/** PHPExcel_Writer_Excel2007 */
include ‘PHPExcel/Writer/Excel2007.php’;
// Create new PHPExcel object
echo date(‘H:i:s’) . ” Create new PHPExcel objectn”;
$objPHPExcel = new PHPExcel();
// Set properties
echo date(‘H:i:s’) . ” Set propertiesn”;
$objPHPExcel->getProperties()->setCreator(“Maarten Balliauw”);
$objPHPExcel->getProperties()->setLastModifiedBy(“Maarten Balliauw”);
$objPHPExcel->getProperties()->setTitle(“Office 2007 XLSX Test Document”);
$objPHPExcel->getProperties()->setSubject(“Office 2007 XLSX Test Document”);
$objPHPExcel->getProperties()->setDescrīption(“Test document for Office 2007 XLSX, generated using php classes.”);
$objPHPExcel->getProperties()->setKeywords(“office 2007 openxml php”);
$objPHPExcel->getProperties()->setCategory(“Test result file”);
// Add some data
echo date(‘H:i:s’) . ” Add some datan”;
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->setCellValue(‘A1’, ‘Hello’);
$objPHPExcel->getActiveSheet()->setCellValue(‘B2’, ‘world!’);
$objPHPExcel->getActiveSheet()->setCellValue(‘C1’, ‘Hello’);
$objPHPExcel->getActiveSheet()->setCellValue(‘D2’, ‘world!’);
// Rename sheet
echo date(‘H:i:s’) . ” Rename sheetn”;
$objPHPExcel->getActiveSheet()->setTitle(‘Simple’);
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel->setActiveSheetIndex(0);
// Save Excel 2007 file
echo date(‘H:i:s’) . ” Write to Excel2007 formatn”;
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
$objWriter->save(str_replace(‘.php’, ‘.xlsx’, __FILE__));
// Echo done
echo date(‘H:i:s’) . ” Done writing file.rn”;
2、使用pear的Spreadsheet_Excel_Writer类
下载地址:http://pear.php.net/package/Spreadsheet_Excel_Writer
此类依赖于OLE,下载地址:http://pear.php.net/package/OLE
需要注意的是导出的Excel文件格式比较老,修改后保存会提示是否转换成更新的格式。
不过可以设定格式,很强大。
<?php
require_once ‘Spreadsheet/Excel/Writer.php’;
// Creating a workbook
$workbook = new Spreadsheet_Excel_Writer();
// sending HTTP headers
$workbook->send(‘test.xls’);
// Creating a worksheet
$worksheet =& $workbook->addWorksheet(‘My first worksheet’);
// The actual data
$worksheet->write(0, 0, ‘Name’);
$worksheet->write(0, 1, ‘Age’);
$worksheet->write(1, 0, ‘John Smith’);
$worksheet->write(1, 1, 30);
$worksheet->write(2, 0, ‘Johann Schmidt’);
$worksheet->write(2, 1, 31);
$worksheet->write(3, 0, ‘Juan Herrera’);
$worksheet->write(3, 1, 32);
// Let’s send the file
$workbook->close();
?>
3:利用smarty,生成符合Excel规范的XML或HTML文件
支持格式,非常完美的导出方案。不过导出来的的本质上还是XML文件,如果用来导入就需要另外处理了。
详细内容请见rardge大侠的帖子:http://bbs.chinaunix.net/viewthread.php?tid=745757
需要注意的是如果导出的表格行数不确定时,最好在模板中把”ss:ExpandedColumnCount=”5″ ss:ExpandedRowCount=”21″”之类的东西删掉。
4、利用pack函数打印出模拟Excel格式的断句符号,这种更接近于Excel标准格式,用office2003修改后保存,还不会弹出提示,推荐用这种方法。
缺点是无格式。
<?php
// Send Header
header(“Pragma: public”);
header(“Expires: 0”);
header(“Cache-Control: must-revalidate, post-check=0, pre-check=0”);
header(“Content-Type: application/force-download”);
header(“Content-Type: application/octet-stream”);
header(“Content-Type: application/download”);;
header(“Content-Disposition: attachment;filename=test.xls “);
header(“Content-Transfer-Encoding: binary “);
// XLS Data Cell
xlsBOF();
xlsWriteLabel(1,0,”My excel line one”);
xlsWriteLabel(2,0,”My excel line two : “);
xlsWriteLabel(2,1,”Hello everybody”);
xlsEOF();
function xlsBOF() {
echo pack(“ssssss”, 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);
return;
}
function xlsEOF() {
echo pack(“ss”, 0x0A, 0x00);
return;
}
function xlsWriteNumber($Row, $Col, $Value) {
echo pack(“sssss”, 0x203, 14, $Row, $Col, 0x0);
echo pack(“d”, $Value);
return;
}
function xlsWriteLabel($Row, $Col, $Value ) {
$L = strlen($Value);
echo pack(“ssssss”, 0x204, 8 + $L, $Row, $Col, 0x0, $L);
echo $Value;
return;
}
?>
不过笔者在64位linux系统中使用时失败了,断句符号全部变成了乱码。
5、使用制表符、换行符的方法
制表符”t”用户分割同一行中的列,换行符”tn”可以开启下一行。
<?php
header(“Content-Type: application/vnd.ms-execl”);
header(“Content-Disposition: attachment; filename=myExcel.xls”);
header(“Pragma: no-cache”);
header(“Expires: 0”);
/*first line*/
echo “hello”.”t”;
echo “world”.”t”;
echo “tn”;
/*start of second line*/
echo “this is second line”.”t”;
echo “Hi,pretty girl”.”t”;
echo “tn”;
?>
6、使用com
如果你的PHP可以开启com模块,就可以用它来导出Excel文件
<?PHP
$filename = “c:/spreadhseet/test.xls”;
$sheet1 = 1;
$sheet2 = “sheet2”;
$excel_app = new COM(“Excel.application”) or Die (“Did not connect”);
print “Application name: {$excel_app->Application->value}n” ;
print “Loaded version: {$excel_app->Application->version}n”;
$Workbook = $excel_app->Workbooks->Open(“$filename”) or Die(“Did not open $filename $Workbook”);
$Worksheet = $Workbook->Worksheets($sheet1);
$Worksheet->activate;
$excel_cell = $Worksheet->Range(“C4”);
$excel_cell->activate;
$excel_result = $excel_cell->value;
print “$excel_resultn”;
$Worksheet = $Workbook->Worksheets($sheet2);
$Worksheet->activate;
$excel_cell = $Worksheet->Range(“C4”);
$excel_cell->activate;
$excel_result = $excel_cell->value;
print “$excel_resultn”;
#To close all instances of excel:
$Workbook->Close;
unset($Worksheet);
unset($Workbook);
$excel_app->Workbooks->Close();
$excel_app->Quit();
unset($excel_app);
?>
7、可以添加图片到 EXcel
Add a drawing to a worksheet
A drawing is always represented as a separate object, which can be added to a worksheet. Therefore, you must first instantiate a new PHPExcel_Worksheet_Drawing, and assign its properties a meaningful value:
$objDrawing = new PHPExcel_Worksheet_Drawing();
$objDrawing->setName(‘Logo’);
$objDrawing->setDescription(‘Logo’);
$objDrawing->setPath(‘./images/officelogo.jpg’);
$objDrawing->setHeight(36);
To add the above drawing to the worksheet, use the following snippet of code. PHPExcel creates the link between the drawing and the worksheet:
$objDrawing->setWorksheet($objPHPExcel->getActiveSheet());
You can set numerous properties on a drawing, here are some examples:
$objDrawing->setName(‘Paid’);
$objDrawing->setDescription(‘Paid’);
$objDrawing->setPath(‘./images/paid.png’);
$objDrawing->setCoordinates(‘B15’);
$objDrawing->setOffsetX(110);
$objDrawing->setRotation(25);
$objDrawing->getShadow()->setVisible(true);
$objDrawing->getShadow()->setDirection(45);