php中两日期比较程序代码
代码如下 | 复制代码 |
<?php // 将日期化成数组,以便制作时间戳 // 制作时间戳 // 日期比较 // 输出结果 |
方法二
代码如下 | 复制代码 |
<?php // 用php自带函数strtotime对日期进行时间戳格式化 // 日期比较 // 输出结果 |
功能 |
说明 |
实例 |
checkdate($month, $date, $year) |
如果应用的值构成一个有效日期,则该函数返回为真。例如,对于错误日期2005年2月31日,此函数返回为假。 在日期用于计算或保存在数据库中之前,可用此函数检查日期并使日期生效。 |
<?php // returns false echo checkdate(2,30,2005) ? "valid" : "invalid";
// returns true echo checkdate(4,6,2010) ? "valid" : "invalid"; ?> |
getdate($ts) |
在没有自变量的情况下,该函数以结合数组的方式返回当前日期与时间。数组中的每个元素代表日期/时间值中的一个特定组成部分。可向函数提交可选的时间标签自变量,以获得与时间标签对应的日期/时间值。 应用此函数来获得一系列离散的,容易分离的日期/时间值。 |
<?php // returns timestamp for 13:15:23 7-Jun-2006 echo mktime(13,15,23,6,7,2006); ?> |
mktime($hour, $minute, $second, $month, $day, $year) |
此函数的作用与getdate()的作用相反:它由一系列的日期与时间值生成一个UNIX时间标签(GMT时间1970年1月1日到现在消逝的秒数)。不用自变量时,它生成当前时间的UNIX时间标签。 用此函数获得即时时间的UNIX时间标签。这种时间标签通常用于许多数据库与程序语言中。 |
<?php // returns timestamp for 13:15:23 7-Jun-2006 echo mktime(13,15,23,6,7,2006); ?> |
date($format, $ts) |
此函数将UNIX时间标签格式化成一个可人为阅读的日期字符串。它是PHP日期/时间API中功能最为强大的函数,可用在一系列的修正值中,将整数时间标签转变为所需的字符串格式。
为显示格式化时间或日期时,应用此函数。 |
<?php // format current date // returns "13-Sep-2005 01:16 PM" echo date("d-M-Y h:i A", mktime ()); ?> |
strtotime ($str) |
此函数将可人为阅读的英文日期/时间字符串转换成UNIX时间标签。 应用此函数将非标准化的日期/时间字符串转换成标准、兼容的UNIX时间标签。 |
<?php // returns 13-Sep-05 echo date("d-M-y", strtotime("today"));
// returns 14-Sep-05 echo date("d-M-y", strtotime("tomorrow"));
// returns 16-Sep-05 echo date("d-M-y", strtotime("today +3 days")); ?> |
strftime ($format, $ts) |
如前面的setlocale()函数定义的那样,此函数将UNIX时间标签格式化成适用于当前环境的日期字符串。 应用此函数建立与当前环境兼容的日期字符串。 |
<?php // set locale to France (on Windows) setlocale(LC_TIME, "fra_fra");
// format month/day names // as per locale setting // returns "septembre" and "mardi" echo strftime("Month: %B "); echo strftime("Day: %A "); ?> |
microtime() |
此函数返回GMT时间1970年1月1日到现在所消逝的秒数与微秒数。 在基准特定的代码块,准确测量它的执行时间时应用此函数。 |
<?php // get starting value $start = microtime();
// run some code for ($x=0; $x<1000; $x++) { ???$null = $x * $x; }
// get ending value $end = microtime();
// calculate time taken for code execution echo "Elapsed time: " . ($end -
$start) ." sec"; ?> |
gmmktime ($hour, $minute, $second, $month, $day, $year) |
此函数由一系列用GMT时间表示的日期与时间值生成一个UNIX时间标签。不用自变量时,它生成一个当前GMT即时时间的UNIX时间标签。 用此函数来获得GMT即时时间的UNIX时间标签。 |
<?php // returns timestamp for 12:25:23 9-Jul-2006 echo gmmktime (12,25,23,7,9,2006); ?> |
gmdate ($format, $ts) |
此函数将UNIX时间标签格式化成可人为阅读的日期字符串。此日期字符串以GMT(非当地时间)表示。 用GMT表示时间标签时应用此函数。 |
<?php // format current date into GMT // returns "13-Sep-2005 08:32 AM" echo gmdate("d-M-Y h:i A", mktime()); ?> |
date_default_ timezone_set ($tz)and date_default_ timezone_get() |
此函数此后所有的日期/时间函数调用设定并恢复默认的时区。 注:此函数仅在PHP 5.1+中有效。 此函数是一个方便的捷径,可为以后的时间操作设定时区。 |
<?php // set timezone to UTC date_default_timezone_set ('UTC'); ?> |
PHP的session功能,一直为许多的初学者为难。就连有些老手,有时都被搞得莫名其妙。本文,将这些问题,做一个简单的汇总,以便大家查阅。
1. 错误提示
引用
代码如下 | 复制代码 |
Warning: Cannot send session cookie - headers already sent |
分析及解决办法
这一类问题,的原因是你在程序中使用session_start()时,之前已经有实际的html内容输出了。或许你说,我没有啊,我只不过是echo或 print一条消息了。很抱歉,你的echo或print语句所产生的输出,就是实际的html内容输出。解决此类问题的办法是,将你的 session_start()调到程序的第一行。
2. 错误提示
引用
代码如下 | 复制代码 |
Warning: open(F:/689\php\sessiondata\sess_66a39376b873f4daecf239891edc98b5, O_RDWR) failed |
分析及解决方法
出现这样的错误语句一般是因为你的php.ini中关于session.save_path一项没有设置好,解决的方法是将session.save_path和session.cookie_path 设置置为
引用
代码如下 | 复制代码 |
session_save_path = c:\temp |
然后在c:\目录下建立一个temp目录,即可
3. 错误提示
引用
代码如下 | 复制代码 |
Warning: Trying to destroy uninitialized session in |
分析及解决方法
出类这样的提示,一般情况都是你直接调session_destroy()函数造成的。很多的朋友认为session_destroy()函数可以独立的运行,其实不然。解决的方法是在你调session_destroy()函数之前,要用session_start()开启session的功能。
4.问题:怎么获得当前session的id值呢?
最简单的方法是:
echo SID;
你会发现的。
5. 问题:我的程序,在调用header函数之前没有任何的输出,虽然我include了一个config.php文件,但在config.php文件中也没有任何的输出,为什么session还是会报出与问题1同样的错误呢,是不是因为我在header之前用了session_start()的缘故呢?
答: 或许你确实认真的检查了你的php程序,在引用header()之前确实也没有任何的输出,并且在你的include文件中也没有任何的输出!但是你是否用光标键在? >这个PHP代码结束语句后移动检查呢?那么你会发现在? >这个后面,有一个空行或几个空格,你删除了这几个空行或空格,那么问题就解决了。
注:此问题,会出PHP4.1.2中,更高版本,没有测试过。
6.问:用session做登录主页面后,其它页面怎么用session限制登录
答:最简单的方法是
代码如下 | 复制代码 |
session_start(); if(!session_registered('login') ││ $login != true) { echo "你没有登陆"; exit; } session_start(); if(!session_registered('login') ││ $login != true) { echo "你没有登陆"; exit; } |
7.问题:我用session_register()注册了session变量,可是当我用header或用javs script的重定向语句,那么在一下页面中,我却访问不到session所注册的变量值。请问如何解决?
问题的程序片段:
代码如下 | 复制代码 |
<?php session_start(); $ok = 'love you'; session_register('ok'); header("location : next.php"); ? > <?php session_start(); $ok = 'love you'; session_register('ok'); header("location : next.php"); ? > |
next.php
代码如下 | 复制代码 |
<?php |
解决的方法:
当你用header函数或window.location这样的功能后,你上一个页面所注册的session变量,就会容易的丢失,关于这个问题的原因,至今仍没有一个详细的回答。
不过有解决的方法。如下所示
代码如下 | 复制代码 |
|
在跳转到下一页面的时候,将session的当前id做为一个参数,传到后一个页面。
8.session如何传数组
代码如下 | 复制代码 |
session_register('data');
|
方法是先注册后赋值
9.问题:我是不是可以用像$HTTP_GET_VARS['**']方式来访问session值呢?
回答:可以,你可以使用如下global数组来访问session,以加强网页的安全性
$HTTP_SESSION_VARS
$_SESSION
例程:
代码如下 | 复制代码 |
<?php echo $HTTP_SESSION_VARS['username']; |
请参照此例程修改符合您自己的程序。
问题10: session_unregister() 和 session_destroy() 有何区别?
session_unregister ()函数主要作用是注消当前的一个session变量。不过要注意的是,如果你用$HTTP_SESSION_VARS或$_SESSION在当前页面中引用过session变量,那么你可能需要和unset()配合 来注消session变量。
而session_destroy()是清除当前的session环境。意思就是说,当你用session_destroy()函数后,那么你就不可能再用session_is_registered ()来检测session的变量了。但是需要注意的是他不能清除global中的session或使用了session cookie的中的session.所以在用session_destroy之前,最好不要用$HTTP_SESSION_VARS $_SESSION来访问session.
例程:
代码如下 | 复制代码 |
if(isset($_COOKIE[session_name()])) { session_start(); session_destroy(); unset($_COOKIE[session_name()]); } |
解决方法:
在php.ini文件中将 extension=php_mbstring.dll 移动到 extension=php_exif.dll 之前即可.
原因就是exif要调用mbstring, 所以mbstring必须在前面.
php_exif.dll,EXIF 函数库,需要 php_mbstring.dll。
并且在 php.ini 中,php_exif.dll 必须在 php_mbstring.dll之后加载。
如果上面方法无效可参考方法二
没有找到php_mbstring.dll,文件无法启动,
解决方法:
在php.ini中默认的是extension_dir = "./"。然而扩展dll在ext目录下面,所以修改成extension_dir = "ext/"即可。
如果系统中没php_mbstring.dll文件可以下载
安装方法如下
把你的下载的php_mbstring.dll复制到
C:/Windows/System/System32
C:/Windows/System
C:/Windows
这里是系统目录哦,你安装在那个盘就是那个盘
本站创建文章转载注明来源 http://www.111cn.net/phper/php.html
本文章分析了在php中正则表达式对中文的支持问题,一般情况下我们可会能简单利用我上面的正则来验证中文,后面我分析了关于兼容gb2312,utf-8和表达式 ^[\\x7f-\\xff]+$ 可以完全搞定中文不兼容的问题。代码如下 | 复制代码 |
$str = '中华人民共和国123456789abcdefg'; |
运行一下上面这段代码,看会有什么提示信息?
Warning: preg_match(): Compilation failed: PCRE does not support L, l, N, P, p, U, u, or X at offset 3 in F:wwwrootphptest.php on line 2
原来,PHP正则表达式中不支持下列 Perl 转义序列:L, l, N, P, p, U, u, or X
在 UTF-8 模式下,允许用“x{...}”,花括号中的内容是表示十六进制数字的字符串。
原来的十六进制转义序列 xhh 如果其值大于 127 的话则匹配了一个双字节 UTF-8 字符。
所以,
可以这样来解决
代码如下 | 复制代码 |
preg_match("/^[x80-xff_a-zA-Z0-9]{3,15}$",$strName);
|
匹配 内码汉字
按照他提供的方式进行测试,代码如下:
代码如下 | 复制代码 |
$str = "php编程"; |
发现这次依然对是否为中文判断失常。不过,既然x表示的十六进制数据,为什么和js里边提供的范围x4e00-x9fa5不一样呢?于是我就换成了下边的代码:
代码如下 | 复制代码 |
$str = "php编程"; if (preg_match("/^[x4e00-x9fa5]+$/u",$str)) { print("该字符串全部是中文"); } else { print("该字符串不全部是中文"); } |
本来以为铁定成功了的事情,没想到,warning又一次产生了:
Warning: preg_match() [function.preg-match]: Compilation failed: invalid UTF-8 string at offset 6 in test.php on line 3
看来又有错误的表达方式了,于是对照了一下那篇文章的表达方式,给“4e00”和“9fa5”两边分别用"{"和“}”包起来,跑了一遍,发现真的准确了:
代码如下 | 复制代码 |
$str = "php编程"; |
知道了php中utf-8编码下用正则表达式匹配汉字的最终正确表达式——/^[x{4e00}-x{9fa5}]+$/u,
最后总结出
代码如下 | 复制代码 |
//if (preg_match(“/^[".chr(0xa1)."-".chr(0xff)."]+$/”, $str)) { //只能在GB2312情况下使用 |
双字节字符编码范围
1. GBK (GB2312/GB18030)
x00-xff GBK双字节编码范围
x20-x7f ASCII
xa1-xff 中文 gb2312
x80-xff 中文 gbk
2. UTF-8 (Unicode)
u4e00-u9fa5 (中文)
x3130-x318F (韩文
xAC00-xD7A3 (韩文)
u0800-u4e00 (日文)
代码如下 | 复制代码 |
<?php $code = json_encode($str); $code = preg_replace("#\u([0-9a-f]+)#ie", "iconv('UCS-2', 'UTF-8', pack('H4', '\1'))", $code); ?> |
相关文章
- 这篇文章主要介绍了C#开发Windows窗体应用程序的简单操作步骤,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-04-12
- 本文通过例子,讲述了C++调用C#的DLL程序的方法,作出了以下总结,下面就让我们一起来学习吧。...2020-06-25
- 有一种方法,可以不打开网站而直接查看到这个网站的源代码.. 这样可以有效地防止误入恶意网站... 在浏览器地址栏输入: view-source:http://...2016-09-20
- <?php require('path.inc.php'); header('content-Type: text/html; charset=utf-8'); $borough_id = intval($_GET['id']); if(!$borough_id){ echo ' ...2016-11-25
- 本文通过两个示例讲解了一下Process类调用外部应用程序的基本用法,并简单讲解了StartInfo属性,有需要的朋友可以参考一下。...2020-06-25
- 本文实例讲述了JS基于Mootools实现的个性菜单效果代码。分享给大家供大家参考,具体如下:这里演示基于Mootools做的带动画的垂直型菜单,是一个初学者写的,用来学习Mootools的使用有帮助,下载时请注意要将外部引用的mootools...2015-10-23
- 这篇文章主要介绍了微信小程序 页面传值详解的相关资料,需要的朋友可以参考下...2017-03-13
- 本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
- 本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学...2015-11-08
- php 取除连续空格与换行代码,这些我们都用到str_replace与正则函数 第一种: $content=str_replace("n","",$content); echo $content; 第二种: $content=preg_replac...2016-11-25
- php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p> </p> <p> </p> <form name="form1...2016-11-25
- 公司一些wordpress网站由于下载的插件存在恶意代码,导致整个服务器所有网站PHP文件都存在恶意代码,就写了个简单的脚本清除。恶意代码示例...2015-10-23
- 大概有如下步骤 新建项目Bejs 新建文件package.json 新建文件Gruntfile.js 命令行执行grunt任务 一、新建项目Bejs源码放在src下,该目录有两个js文件,selector.js和ajax.js。编译后代码放在dest,这个grunt会...2014-06-07
- 其实挺简单的就是if(navigator.userAgent.indexOf('UCBrowser') > -1) {alert("uc浏览器");}else{//不是uc浏览器执行的操作}如果想测试某个浏览器的特征可以通过如下方法获取JS获取浏览器信息 浏览器代码名称:navigator...2015-11-08
- 本文实例讲述了JS实现双击屏幕滚动效果代码。分享给大家供大家参考,具体如下:这里演示双击滚屏效果代码的实现方法,不知道有觉得有用处的没,现在网上还有很多还在用这个特效的呢,代码分享给大家吧。运行效果截图如下:在线演...2015-10-30
- 一、日期减去天数等于第二个日期function cc(dd,dadd){//可以加上错误处理var a = new Date(dd)a = a.valueOf()a = a - dadd * 24 * 60 * 60 * 1000a = new Date(a)alert(a.getFullYear() + "年" + (a.getMonth() +...2015-11-08
- 这篇文章主要介绍了uniapp微信小程序:key失效的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-01-20
- 微信支付,即便交了保证金,你还是处理测试阶段,不能正式发布。必须到你通过程序测试提交订单、发货通知等数据到微信的系统中,才能申请发布。然后,因为在微信中是通过JS方式调用API,必须在微信后台设置支付授权目录,而且要到...2014-05-31
- 本文实例讲述了php计算两个日期相差天数的方法。...2015-03-15
- 本文实例讲述了PHP常用的小程序代码段。分享给大家供大家参考,具体如下:1.计算两个时间的相差几天$startdate=strtotime("2009-12-09");$enddate=strtotime("2009-12-05");上面的php时间日期函数strtotime已经把字符串...2015-11-24