我们先准备mysql数据表,假设项目中有一张记录学生信息的表student,并有id,name,sex,age分别记录学生的姓名、性别、年龄等信息。
代码如下 | 复制代码 |
CREATE TABLE `student` ( |
我们还需要一个html交互页面,放置导入表单和导出按钮。
代码如下 | 复制代码 |
<form id="addform" action="do.php?action=import" method="post" enctype="multipart/form-data"> |
选择好本地csv文件后,点击导入,提交到do.php?action=import处理,而点击导出按钮则请求地址do.php?action=export进行数据导出处理。
1.导入CSV
do.php需要根据get过来的参数,分别处理导入和导出过程,php结构如下:
代码如下 | 复制代码 |
include_once ("connect.php"); //连接数据库 |
导入CSV处理流程:校验csv文件合法性(本文忽略)->打开读入并解析csv文件中的字段->循环获取各字段值->批量添加到数据表中->完成。
代码如下 | 复制代码 |
if ($action == 'import') { //导入CSV |
注意php自带的fgetcsv函数可以轻松处理csv,使用该函数可以从文件指针中读入一行并解析CSV字段。下面的函数将csv文件字段解析并以数组的形式返回。
代码如下 | 复制代码 |
function input_csv($handle) { |
此外在导入到数据库中时,我们采用的是批量插入而不是一条条插入的,因此在构建SQL语句时,要稍作处理,见代码。
2.导出CSV
我们知道csv文件是由逗号分割符组成的纯文本文件,你可以用excel打开,效果跟xls表个一样。
导出CSV处理流程:读取学生信息表->循环记录构建逗号分隔的字段信息->设置header信息->导出文件(下载)到本地
代码如下 | 复制代码 |
... |
要将数据导出到本地即下在,需要修改header信息,代码如下:
代码如下 | 复制代码 |
function export_csv($filename,$data) { |
注意导入和导出的过程中,因为我们使用的是统一UTF-8编码,遇到中文字符一定要记得转码,否则可能会出现中文乱码的情况。
本文章来给各位 同学总结了几乎所有的匹配网址的正则表达式代码,下面我来给大家一一介绍使用方法,有需要的朋友可参考。URI 是 Web上可用的每种资源 - HTML文档、图像、视频片段、程序等 - 由一个通用资源标志符(Uniform Resource Identifier, 简称"URI")进行定位。
对就分组:
^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(?([^#]*))?(#(.*))?
12 3 4 5 6 7 8 9
例
代码如下 | 复制代码 |
正则表达式 (http|ftp|https)://[w-_]+(.[w-_]+)+([w-.,@?^=%&:/~+#]*[w-@?^=%&/~+#])? 正则表达式 ^(http|https|ftp)://([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)?((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]).(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0).(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0).(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|([a-zA-Z0-9-]+.)*[a-zA-Z0-9-]+.[a-zA-Z]{2,4})(:[0-9]+)?(/[^/][a-zA-Z0-9.,?'\/+&%$#=~_-@]*)*$ 正则表达式 ^([a-zA-Z]:|\\[^/\:*?"<>|]+\[^/\:*?"<>|]+)(\[^/\:*?"<>|]+)+(.[^/\:*?"<>|]+)$
|
可以匹配任何网址
代码如下 | 复制代码 |
<script type="text/javascript"> |
PHP 测试:
代码如下 | 复制代码 |
/* |
百度上看到另外一块简洁的代码:
代码如下 | 复制代码 |
<?php // 从 URL 中取得主机名 preg_match("/^(http://)?([^/]+)/i", "http://www.php.net/index.html", $matches); $host = $matches[2]; // 从主机名中取得后面两段 preg_match("/[^./]+.[^./]+$/", $host, $matches); echo "domain name is: {$matches[0]}n"; ?> |
执行后输出:domain name is: php.net
phpExcel是php中一个excel插件操作类,可以很好的解决在excel各种操作,包括如,读,写,删除,插入等excel操作,下面笔者来给各位同学介绍介绍phpExcel用法吧。下面是总结的几个使用方法
include ‘PHPExcel.php’;
include ‘PHPExcel/Writer/Excel2007.php’;
//或者include ‘PHPExcel/Writer/Excel5.php’; 用于输出.xls的
创建一个excel
$objPHPExcel = new PHPExcel();
保存excel—2007格式
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
//或者$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel); 非2007格式
$objWriter->save(”xxx.xlsx”);
直接输出到浏览器
$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);
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/vnd.ms-execl”);
header(”Content-Type:application/octet-stream”);
header(”Content-Type:application/download”);;
header(’Content-Disposition:attachment;filename=”resume.xls”‘);
header(”Content-Transfer-Encoding:binary”);
$objWriter->save(’php://output’);
——————————————————————————————————————–
设置excel的属性:
创建人
$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()->setDescription(”Test document for Office 2007 XLSX, generated using PHP classes.”);
关键字
$objPHPExcel->getProperties()->setKeywords(”office 2007 openxml php”);
种类
$objPHPExcel->getProperties()->setCategory(”Test result file”);
——————————————————————————————————————–
设置当前的sheet
$objPHPExcel->setActiveSheetIndex(0);
设置sheet的name
$objPHPExcel->getActiveSheet()->setTitle(’Simple’);
设置单元格的值
$objPHPExcel->getActiveSheet()->setCellValue(’A1′, ‘String’);
$objPHPExcel->getActiveSheet()->setCellValue(’A2′, 12);
$objPHPExcel->getActiveSheet()->setCellValue(’A3′, true);
$objPHPExcel->getActiveSheet()->setCellValue(’C5′, ‘=SUM(C2:C4)’);
$objPHPExcel->getActiveSheet()->setCellValue(’B8′, ‘=MIN(B2:C5)’);
合并单元格
$objPHPExcel->getActiveSheet()->mergeCells(’A18:E22′);
分离单元格
$objPHPExcel->getActiveSheet()->unmergeCells(’A28:B28′);
生成Excel常用方法
<?
//设置PHPExcel类库的include path
set_include_path('.'. PATH_SEPARATOR .
'D:ZealPHP_LIBS' . PATH_SEPARATOR .
get_include_path());
require_once 'PHPExcel.php';
// uncomment
////require_once 'PHPExcel/Writer/Excel5.php'; // 用于其他低版本xls
// or
////require_once 'PHPExcel/Writer/Excel2007.php'; // 用于 excel-2007 格式
// 创建一个处理对象实例
$objExcel = new PHPExcel();
// 创建文件格式写入对象实例, uncomment
////$objWriter = new PHPExcel_Writer_Excel5($objExcel); // 用于其他版本格式
// or
////$objWriter = new PHPExcel_Writer_Excel2007($objExcel); // 用于 2007 格式
//$objWriter->setOffice2003Compatibility(true);
//*************************************
//设置文档基本属性
$objProps = $objExcel->getProperties();
$objProps->setCreator("Zeal Li");
$objProps->setLastModifiedBy("Zeal Li");
$objProps->setTitle("Office XLS Test Document");
$objProps->setSubject("Office XLS Test Document, Demo");
$objProps->setDescription("Test document, generated by PHPExcel.");
$objProps->setKeywords("office excel PHPExcel");
$objProps->setCategory("Test");
//*************************************
//设置当前的sheet索引,用于后续的内容操作。
//一般只有在使用多个sheet的时候才需要显示调用。
//缺省情况下,PHPExcel会自动创建第一个sheet被设置SheetIndex=0
$objExcel->setActiveSheetIndex(0);
$objActSheet = $objExcel->getActiveSheet();
//设置当前活动sheet的名称
$objActSheet->setTitle('测试Sheet');
//*************************************
//设置单元格内容
//
//由PHPExcel根据传入内容自动判断单元格内容类型
$objActSheet->setCellValue('A1', '字符串内容'); // 字符串内容
$objActSheet->setCellValue('A2', 26); // 数值
$objActSheet->setCellValue('A3', true); // 布尔值
$objActSheet->setCellValue('A4', '=SUM(A2:A2)'); // 公式
//显式指定内容类型
$objActSheet->setCellValueExplicit('A5', '847475847857487584',
PHPExcel_Cell_DataType::TYPE_STRING);
//合并单元格
$objActSheet->mergeCells('B1:C22');
//分离单元格
$objActSheet->unmergeCells('B1:C22');
//*************************************
//设置单元格样式
//
//设置宽度
$objActSheet->getColumnDimension('B')->setAutoSize(true);
$objActSheet->getColumnDimension('A')->setWidth(30);
$objStyleA5 = $objActSheet->getStyle('A5');
//设置单元格内容的数字格式。
//
//如果使用了 PHPExcel_Writer_Excel5 来生成内容的话,
//这里需要注意,在 PHPExcel_Style_NumberFormat 类的 const 变量定义的
//各种自定义格式化方式中,其它类型都可以正常使用,但当setFormatCode
//为 FORMAT_NUMBER 的时候,实际出来的效果被没有把格式设置为"0"。需要
//修改 PHPExcel_Writer_Excel5_Format 类源代码中的 getXf($style) 方法,
//在 if ($this->_BIFF_version == 0x0500) { (第363行附近)前面增加一
//行代码:
//if($ifmt === '0') $ifmt = 1;
//
//设置格式为PHPExcel_Style_NumberFormat::FORMAT_NUMBER,避免某些大数字
//被使用科学记数方式显示,配合下面的 setAutoSize 方法可以让每一行的内容
//都按原始内容全部显示出来。
$objStyleA5
->getNumberFormat()
->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER);
//设置字体
$objFontA5 = $objStyleA5->getFont();
$objFontA5->setName('Courier New');
$objFontA5->setSize(10);
$objFontA5->setBold(true);
$objFontA5->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE);
$objFontA5->getColor()->setARGB('FF999999');
//设置对齐方式
$objAlignA5 = $objStyleA5->getAlignment();
$objAlignA5->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objAlignA5->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
//设置边框
$objBorderA5 = $objStyleA5->getBorders();
$objBorderA5->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objBorderA5->getTop()->getColor()->setARGB('FFFF0000'); // color
$objBorderA5->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objBorderA5->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objBorderA5->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
//设置填充颜色
$objFillA5 = $objStyleA5->getFill();
$objFillA5->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
$objFillA5->getStartColor()->setARGB('FFEEEEEE');
//从指定的单元格复制样式信息.
$objActSheet->duplicateStyle($objStyleA5, 'B1:C22');
//*************************************
//添加图片
$objDrawing = new PHPExcel_Worksheet_Drawing();
$objDrawing->setName('ZealImg');
$objDrawing->setDescription('Image inserted by Zeal');
$objDrawing->setPath('./zeali.net.logo.gif');
$objDrawing->setHeight(36);
$objDrawing->setCoordinates('C23');
$objDrawing->setOffsetX(10);
$objDrawing->setRotation(15);
$objDrawing->getShadow()->setVisible(true);
$objDrawing->getShadow()->setDirection(36);
$objDrawing->setWorksheet($objActSheet);
//添加一个新的worksheet
$objExcel->createSheet();
$objExcel->getSheet(1)->setTitle('测试2');
//保护单元格
$objExcel->getSheet(1)->getProtection()->setSheet(true);
$objExcel->getSheet(1)->protectCells('A1:C22', 'PHPExcel');
//*************************************
//输出内容
//
$outputFileName = "output.xls";
//到文件
////$objWriter->save($outputFileName);
//or
//到浏览器
////header("Content-Type: application/force-download");
////header("Content-Type: application/octet-stream");
////header("Content-Type: application/download");
////header('Content-Disposition:inline;filename="'.$outputFileName.'"');
////header("Content-Transfer-Encoding: binary");
////header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
////header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
////header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
////header("Pragma: no-cache");
////$objWriter->save('php://output');
?>
本程序仅供php+mysql爱好者学习测试用,测试过程中,可能会出现错误,请朋友们根据错误提示修改本程序,本程序为安装版,先运行install目录,然后根据提示操作!
关于PHP语法的那些就不说了,我就说一下连接mysql吧!
代码如下 | 复制代码 |
$conn =@mysql_connect("localhost","root","mydown") or die("数据库链接错误"); mysql_select_db("bbs", $conn); mysql_query("set names 'GBK'"); |
第一句就是描述了连接数据库的语句,并且如果失败的提示”数据库连接错误“;前面的三个参数分别代表了 数据库地址localhost,数据库用户名root,连接数据库密码mydown;
第二句就是描述了连接到数据库表bbs,后面的$conn代表哪个数据库。
第三句话就是转换编码格式,显示中文。
连接好了数据库之后,我们来看下 数据库语句怎么在PHP中提交运行!
代码如下 | 复制代码 |
$sql="INSERT INTO message (id,user,title,content,lastdate) values ('','$_POST[user]','$_POST[title]','$_POST[content]',now())"; mysql_query($sql); |
上面中的蓝色字体大家应该面熟,意思就是 在数据库中插入信息。第二句是在数据库中运行该语句。想起中类似$_POST[title]的变量,大家应该知道,这是通过网页提交获取的信息
实例
install安装
代码如下 | 复制代码 |
<html> |
check_install.php
代码如下 | 复制代码 |
<?php if (!$fp) { if ($fw) {
|
login.php
代码如下 | 复制代码 |
<?php if($_GET[out]){
<SCRIPT language=javascript> |
conn.php数据库连接
代码如下 | 复制代码 |
<?php include("config.php"); $conn =@mysql_connect($server,$server_name,$server_pass) or die("数据库链接错误"); mysql_select_db($server_data, $conn);//此处代表的要打开的数据库名称,"bbs"是我的数据库名,修改成自己的! mysql_query("set names 'GBK'"); //使用GBK中文编码; ?> |
index.php文件
代码如下 | 复制代码 |
<?php |
add.php增加留方程序
代码如下 | 复制代码 |
<?php <table border="0" width="450"> <SCRIPT language=javascript> |
test.php数据库结构
代码如下 | 复制代码 |
<?php |
获取日期时间也是网站设计中经常用到的。php提供了date()时间函数来实现这一功能,结构形式如下:
实例:
代码如下 | 复制代码 |
<?php |
参数 | 含义 | 备注 |
---|---|---|
a | 上午或下午 | am或pm |
A | 上午或下午 | AM或PM |
B | 互联网时间 | 000~999 |
d | 月份中的第几天 | 01~31 |
D | 替换成星期几的英文简称 | Mon~Sun |
F | 用英文表示月份 | January~December |
g | 小时 | 1~12 |
G | 小时 | 0~23 |
h | 小时 | 01~12 |
H | 小时 | 00~23 |
i | 分钟 | 00~59 |
I | 是否为夏令时 | 是为1,否为0 |
j | 月份中的第几天 | 1~31 |
l | 星期几 | Sunday~Saturday |
L | 是否为闰年 | 闰年为1,不是闰年为0 |
m | 用数字表示月份,按两位输出 | 01~12 |
M | 月份缩写的英文单词 | Jan~Dec |
n | 月份按阿拉伯数字格式输出 | 1~12 |
s | 秒数 | 00~59 |
S | 每月天数英文后缀 | 1st~2nd |
t | 指定月份的天数 | 28~31 |
T | 本机设置的时区 | 如EST |
w | 一周的第几天(从0~6) | 0~6 |
Y | 替换成4位年号 | 如2011 |
y | 替换成2位的年号 | 如11 |
z | 一年中第几天 | 0~366 |
Z | 以秒表示的时区偏差 | -43200~43200 |
getdate()定义和用法
getdate() 函数取得日期/时间信息。
语法
getdate(timestamp)参数 描述
timestamp 可选。规定 Unix 时间格式中的时间。
说明
返回一个根据 timestamp 得出的包含有日期信息的结合数组。如果没有给出时间戳,则认为是当前本地时间。
数组中的单元如下:
代码如下 | 复制代码 |
<?php Array |
键名 | 说明 | 返回值例子 |
---|---|---|
"seconds" | 秒的数字表示 | 0 到 59 |
"minutes" | 分钟的数字表示 | 0 到 59 |
"hours" | 小时的数字表示 | 0 到 23 |
"mday" | 月份中第几天的数字表示 | 1 到 31 |
"wday" | 星期中第几天的数字表示 | 0(表示星期天)到 6(表示星期六) |
"mon" | 月份的数字表示 | 1 到 12 |
"year" | 4 位数字表示的完整年份 | 例如:1999 或 2003 |
"yday" | 一年中第几天的数字表示 | 0 到 365 |
"weekday" | 星期几的完整文本表示 | Sunday 到 Saturday |
"month" | 月份的完整文本表示 | January 到 December |
0 | 自从 Unix 纪元开始至今的秒数,和 time() 的返回值以及用于 date() 的值类似。 | 系统相关,典型值为从 -2147483648 到 2147483647。 |
mktime() 定义和用法
mktime() 函数返回一个日期的 Unix 时间戳。
参数总是表示 GMT 日期,因此 is_dst 对结果没有影响。
参数可以从右到左依次空着,空着的参数会被设为相应的当前 GMT 值。
语法
mktime(hour,minute,second,month,day,year,is_dst)
例子
mktime() 函数对于日期运算和验证非常有用。它可以自动校正越界的输入:
代码如下 | 复制代码 |
<?php echo(date("M-d-Y",mktime(0,0,0,12,36,2001))); echo(date("M-d-Y",mktime(0,0,0,14,1,2001))); echo(date("M-d-Y",mktime(0,0,0,1,1,2001))); echo(date("M-d-Y",mktime(0,0,0,1,1,99))); ?> |
输出:
Jan-05-2002
Feb-01-2002
Jan-01-2001
Jan-01-1999
参数 | 描述 |
---|---|
hour | 可选。规定小时。 |
minute | 可选。规定分钟。 |
second | 可选。规定秒。 |
month | 可选。规定用数字表示的月。 |
day | 可选。规定天。 |
year | 可选。规定年。在某些系统上,合法值介于 1901 - 2038 之间。不过在 PHP 5 中已经不存在这个限制了。 |
is_dst |
可选。如果时间在日光节约时间(DST)期间,则设置为1,否则设置为0,若未知,则设置为-1。 自 5.1.0 起,is_dst 参数被废弃。因此应该使用新的时区处理特性。 |