告诉你一个简单的方法:
代码如下 | 复制代码 |
<?php echo date("Y-m-d H:i:s", time()); ?> |
结果为:2009-10-06 16:21:38
time()函数:显示系统当前时间。
time() 函数返回当前时间的 Unix 时间戳。
语法
time(void)参数 描述
void 可选。
说明
返回自从 Unix 纪元(格林威治时间 1970 年 1 月 1 日 00:00:00)到当前时间的秒数。
date()函数:将服务器的时间格式化。
date() 函数格式化一个本地时间/日期。
语法
date(format,timestamp)参数 描述
format 必需。规定如何返回结果。
timestamp 可选。
例子
代码如下 | 复制代码 |
<?php echo("Result with gmdate():<br />"); |
语法: string date(string format, int [timestamp]);
函数种类: 时间日期
返回值: 字符串
参数如下:
a - "am" 或是 "pm"
A - "AM" 或是 "PM"
d - 几日,二位数字,若不足二位则前面补零; 如: "01" 至 "31"
D - 星期几,三个英文字母; 如: "Fri"
F - 月份,英文全名; 如: "January"
h - 12 小时制的小时; 如: "01" 至 "12"
H - 24 小时制的小时; 如: "00" 至 "23"
g - 12 小时制的小时,不足二位不补零; 如: "1" 至 12"
G - 24 小时制的小时,不足二位不补零; 如: "0" 至 "23"
i - 分钟; 如: "00" 至 "59"
j - 几日,二位数字,若不足二位不补零; 如: "1" 至 "31"
l - 星期几,英文全名; 如: "Friday"
m - 月份,二位数字,若不足二位则在前面补零; 如: "01" 至 "12"
n - 月份,二位数字,若不足二位则不补零; 如: "1" 至 "12"
M - 月份,三个英文字母; 如: "Jan"
s - 秒; 如: "00" 至 "59"
S - 字尾加英文序数,二个英文字母; 如: "th","nd"
t - 指定月份的天数; 如: "28" 至 "31"
U - 总秒数
w - 数字型的星期几,如: "0" (星期日) 至 "6" (星期六)
Y - 年,四位数字; 如: "1999"
y - 年,二位数字; 如: "99"
z - 一年中的第几天; 如: "0" 至 "365"
如果显示的时间与系统不一致,就要改PHP.ini配置文件。
系统默认是UTC时间
可以打开php.inc
设置 date.timezone = PRC
一,获取指定日期的unix时间戳
strtotime("2009-1-22") 示例如下:
1.echo strtotime("2009-1-22")
结果:1232553600
说明:返回2009年1月22日0点0分0秒时间戳
二,获取英文文本日期时间
示例如下:
便于比较,使用date将当时间戳与指定时间戳转换成系统时间
(1)打印明天此时的时间戳strtotime("+1 day")
当前时间:
1.echo date("Y-m-d H:i:s",time())
结果:2009-01-22 09:40:25
指定时间:
1.echo date("Y-m-d H:i:s",strtotime("+1 day"))
结果:2009-01-23 09:40:25
(2)打印昨天此时的时间戳strtotime("-1 day")
当前时间:
1.echo date("Y-m-d H:i:s",time())
结果:2009-01-22 09:40:25
指定时间:
1.echo date("Y-m-d H:i:s",strtotime("-1 day"))
结果:2009-01-21 09:40:25
(3)打印下个星期此时的时间戳strtotime("+1 week")
当前时间:
1.echo date("Y-m-d H:i:s",time())
结果:2009-01-22 09:40:25
指定时间:
1.echo date("Y-m-d H:i:s",strtotime("+1 week"))
结果:2009-01-29 09:40:25
(4)打印上个星期此时的时间戳strtotime("-1 week")
当前时间:
1.echo date("Y-m-d H:i:s",time())
结果:2009-01-22 09:40:25
指定时间:
1.echo date("Y-m-d H:i:s",strtotime("-1 week"))
结果:2009-01-15 09:40:25
(5)打印指定下星期几的时间戳strtotime("next Thursday")
当前时间:
1.echo date("Y-m-d H:i:s",time())
结果:2009-01-22 09:40:25
指定时间:
1.echo date("Y-m-d H:i:s",strtotime("next Thursday"))
结果:2009-01-29 00:00:00
(6)打印指定上星期几的时间戳strtotime("last Thursday")
当前时间:
1.echo date("Y-m-d H:i:s",time())
结果:2009-01-22 09:40:25
指定时间:
1.echo date("Y-m-d H:i:s",strtotime("last Thursday"))
结果:2009-01-15 00:00:00
以上示例可知,strtotime能将任何英文文本的日期时间描述解析为Unix时间戳,我们结合mktime()或date()格式化日期时间获取指定的时间戳,实现所需要的日期时间。
代码如下 | 复制代码 |
<?php if(get_magic_quotes_gpc()) |
将变量从PHP数组导出注册为全局变量,实现键名当作变量名,值作为变量的值,如下
代码如下 | 复制代码 |
$vars = array('var1'=>'1','var2'=>'2','var3'=>'3','var4'=>'4','var5'=>'5'); |
实现通过键名当作变量名的形式访问,如:$var1,$var2
第一种方案:采用PHP内置extract()函数,方法如下
代码如下 | 复制代码 |
extract($vars); |
第二种方案:采用foreach循环数组注册为全局变量,方法如下
代码如下 | 复制代码 |
foreach($vars as $k=>$v){ $GLOBALS[$k] = $v; } |
推荐采用第二种方案,因为extract()函数存在性能和安全问题。
extract() 函数说明
(PHP 3 >= 3.0.7, PHP 4, PHP 5)
extract -- 从数组中将变量导入到当前的符号表
代码如下 | 复制代码 |
int extract ( array var_array [, int extract_type [, string prefix]] ) |
本函数用来将变量从数组中导入到当前的符号表中。接受结合数组 var_array 作为参数并将键名当作变量名,值作为变量的值。对每个键/值对都会在当前的符号表中建立变量,并受到 extract_type 和 prefix 参数的影响。
参考表
参数 | 描述 |
---|---|
array | 必需。规定要使用的输入。 |
extract_rules |
可选。extract() 函数将检查每个键名是否为合法的变量名,同时也检查和符号表中的变量名是否冲突。 对非法、数字和冲突的键名的处理将根据此参数决定。可以是以下值之一: 可能的值:
|
prefix |
可选。请注意 prefix 仅在 extract_type 的值是 EXTR_PREFIX_SAME,EXTR_PREFIX_ALL,EXTR_PREFIX_INVALID 或 EXTR_PREFIX_IF_EXISTS 时需要。如果附加了前缀后的结果不是合法的变量名,将不会导入到符号表中。 前缀和数组键名之间会自动加上一个下划线。 |
使用全部参数:
代码如下 | 复制代码 |
<?php extract($my_array, EXTR_PREFIX_SAME, 'dup'); echo "$a = $a; $b = $b; $c = $c; $dup_a = $dup_a;"; 输出: $a = Original; $b = Dog; $c = Horse; $dup_a = Cat; |
采用PHP函数glob实现寻找与模式匹配的文件路径,主要讨论glob()函数的作用和用法,利用glob函数读取目录比其它的要快N倍,因为glob函数是内置函数处理起来自然要快。
一,函数原型
array glob ( string pattern [, int flags] )
注意:glob()函数获取的是一个数组,其返回一个包含有匹配文件/目录的数组。如果出错返回FALSE
二,版本兼容
PHP 4 >= 4.3.0, PHP 5
三,函数的基础用法与实例
1,匹配目录下.txt后缀的文件
代码如下 | 复制代码 |
<?php foreach (glob("*.txt") as $filename) { echo $filename; } ?> |
2,实现兼容大小写匹配
代码如下 | 复制代码 |
<?php $pattern = sql_case("*.pdf"); var_dump(glob($pattern)); ?> |
类似如下
代码如下 | 复制代码 |
<?php foreach (array_merge(glob("*.pdf"),glob("*.PDF")) as $filename) { echo "$filename n"; } ?> |
3,获取目录下的所有子目录
代码如下 | 复制代码 |
<?php function listdirs($dir) { static $alldirs = array(); $dirs = glob($dir . '/*', GLOB_ONLYDIR); if (count($dirs) > 0) { foreach ($dirs as $d) $alldirs[] = $d; } foreach ($dirs as $dir) listdirs($dir); return $alldirs; } ?> |
4,匹配所有文件
代码如下 | 复制代码 |
<?php $files = glob('{,.}*', GLOB_BRACE); ?> |
四,注意事项
1,不能作用于远程文件,被检查的文件必须通过服务器的文件系统访问。
2,使用 glob("[myfolder]/*.txt")将不能匹配,解决方法为 glob("[myfolder]/*.txt"),注意[]字符应用。
3,其次是第二个参数flags有效标记说明
(1)GLOB_MARK - 在每个返回的项目中加一个斜线
(2)GLOB_NOSORT - 按照文件在目录中出现的原始顺序返回(不排序)
(3)GLOB_NOCHECK - 如果没有文件匹配则返回用于搜索的模式
(4)GLOB_NOESCAPE - 反斜线不转义元字符
(5)GLOB_BRACE - 扩充 {a,b,c} 来匹配 'a','b' 或 'c'
(6)GLOB_ONLYDIR - 仅返回与模式匹配的目录项 注意: 在 PHP 4.3.3 版本之前 GLOB_ONLYDIR 在 Windows 或者其它不使用 GNU C 库的系统上不可用。
(7)GLOB_ERR - 停止并读取错误信息(比如说不可读的目录),默认的情况下忽略所有错误 注意: GLOB_ERR 是 PHP 5.1 添加的。
glob()函数的典型应用是读取数据表文件,如获取某个目录下的.sql后缀文件,这种在单元测试中非常实用,可实现读取sql文件重建数据库等,具体请参与PHP手册,请关注下一期PHP内置函数研究系列
其它参考
代码如下 | 复制代码 |
例子 1 Array Array |