php date_default_timezone_set 北京时间

 更新时间:2016年11月25日 15:57  点击:1958

date_default_timezone_set() 函数设置用在脚本中所有日期/时间函数的默认时区。

解决这个少了的8小时,有两种方法:
第一种,在PHP的设置文件php.ini中设置date.timezone参数,设置之后的样式如下:

Date.timezone = PRC


另外一种方法,自己设置。在PHP中定义了一个date_default_timezone_set()函数这个函数就是让我们来设置PHP的时间函数所使用的时区的。

例如我们可以这样设置:

Date_default_timezone_set(“PRC”);//设定为中华人民共和国www.111cn.net
echo date("Y-m-d H:i:s");


ini_set('default_charset', HTML_CHARSET);
date_default_timezone_set(TIME_ZONE);

Note: This function always returns true (even if the timezone parameter isn't valid).
注意:这个函数总是返回True(即使时区参数无效的情况下)。

<?php

数据结构

CREATE TABLE IF NOT EXISTS `leo_user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` char(30) NOT NULL,
  `birthday` date NOT NULL,
  `email` char(60) NOT NULL,
  `sex` enum('M','F','-') NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `email` (`email`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;

--
-- 导出表中的数据 `leo_user`
--

INSERT INTO `leo_user` (`id`, `name`, `birthday`, `email`, `sex`) VALUES
(1, '张三', '1980-01-01', 'zhangshan@email.com', 'M'),
(2, '李四', '1998-01-25', 'lisi@test.com', 'M'),
(3, '王五', '1985-12-24', 'wangwu@leophp.cn', '-'),
(4, '赵六', '1978-05-05', 'zhaoliu@test.com', 'F');

 

function db_exec($sql) {
    $resource = mysql教程_connect(DB_HOST, DB_USER, DB_PASSWORD);   //连接数据库教程
    mysql_query("SET NAMES '" . DB_CHARSET . "' ;");            //设置字体集
    $connect = mysql_select_db(DB_NAME, $resource);             //选择数据库
    return mysql_query($sql, $resource);     //执行SQL
}

if($_POST['op'] == 'add') {
    $sql = "
        INSERT INTO " . TABLE_PREFIX . "user (
            name,
            birthday,
            email,
            sex )
        VALUES (
            '" . $_POST['name'] . "',
            '" . $_POST['birthday'] . "',
            '" . $_POST['email'] . "',
            '" . $_POST['sex'] . "'
        )";
    if(db_exec($sql)) {
        $notice = array(
            'msg' => '添加成功',
            'alt' => '列表用户',
            'url' => '?op=index'
        );
        require_once www.111cn.net/_notice.phtml';
    } else {
        $notice = array(
            'msg' => '添加失败',
            'alt' => '添加用户',
            'url' => '?op=add'
        );
        require_once www.111cn.net/_notice.phtml';
    }
} else {
    require_once 'view/add.phtml';
}

//add.phtml模板页面

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>用户添加</title>
</head>
<body>
    <h3>用户添加</h3>
    <form action="?op=add" method="post" enctype="application/x-www-form-urlencoded">
        姓名:<input type="text" name="name" size="15" /><br />
        生日:<input type="text" name="birthday" size="10" /> (YYYY-MM-DD)www.111cn.net<br />
        邮箱:<input type="text" name="email" size="30" /><br />
        性别:<input type="radio" name="sex" value="3" />保密
              <input type="radio" name="sex" value="1" />男
              <input type="radio" name="sex" value="2" />女<br />
        <input type="hidden" name="op" value="add" /><br />
        <input type="submit" name="submit" value="添加用户" />
    </form>
    <?php require_once 'view/_foot.phtml'; ?>
</body>
</html>

<form id="form1" name="form1" method="post" action="">
  <label>name
  <input name="name" type="text" id="name" />
  </label>
  <p>
    <label>birthday
    <input name="birthday" type="text" id="birthday" />
    </label>
  </p>
  <p>
    <label>email
    <input name="email" type="text" id="email" />
    </label>
  </p>
  <p>
    <label>
    <input type="submit" name="Submit" value="submit" />
    </label>
  </p>
</form>
<?php
//这个函数主要用来检查提交的表单数据是否有错(validate)
//实际应用上用户输入数据的检验(validate)及过滤(filter)都涉到程序安全性,非常重要,必不可少
//在写实际应用时不会把$_POST直接放在函数里,这里是一个姑息的解决方法,希望大家能改正

if( $_POST )
{
 form_error();
}
function form_error() {
    $_POST['name'] = trim(strip_tags($_POST['name'])); //这个实际上是Filter
    $len_name = strlen($_POST['name']);
    if($len_name > 30 || $len_name < 2) {
        $msg = '姓名长度必须大于2小于30<br />';
    }
    $date = explode('-', $_POST['birthday']);
    if(sizeof($date) != 3) {
        $msg .= '日期格式错误<br />';
    } else {
        if(!checkdate($date[1], $date[2], $date[0])) {
            $msg .= '日期不正确<br />';
        }
    }
    if(!eregi("^[a-z'0-9]+([._-][a-z'0-9]+)*@([a-z0-9]+([._-][a-z0-9]+))+$", $_POST['email'])) {
        $msg .= '邮箱格式错误';
    }
    return $msg;
}
?>

switch 语句和 elseif 语句的比较 在 switch 语句中,条件只求一次,然后和每个 case 比较,而在 elseif 语句中,条件会再次求值。如果你的条件比较复杂,或者是多次循环,用 switch 语句速度会更加快些。

php switch 循环,通常处理复合式的条件判断,每个子条件,都是 case 指令部分,通常为变量名称。而 case 后的 exprN,通常表示变量值。冒号后则为符合该条件要执行的部分。注意要用 break 跳离循环。

switch与if 区别是

 

用 if 循环就很麻烦了。当然在设计时,要将出现机率最大的条件放在最前面,最少出现的条件放在最后面,可以增加程序的执行效率,Switch 语句可以避免冗长的 if..elseif..else 代码块。


switch (expr) {
     case expr1:            //注意这里是冒号:
       statement1;         //这里是分号;
       break;                   //这里是分号;
     case expr2:
       statement2;
       break;
       :
       :
     default:
       statementN;
       break;
}

工作原理:

对表达式(通常是变量)进行一次计算
把表达式的值与结构中 case 的值进行比较
如果存在匹配,则执行与 case 关联的代码
代码执行后,break 语句阻止代码跳入下一个 case 中继续执行
如果没有 case 为真,则使用 default 语句

看个实例
*/
$i =5;
switch( $i )
{
 case 1:
  echo '1';
  break;
 case 2:
  echo '2';
  break;
 case 3:
  echo '5';
  break;
 case 4:
  echo $i;
  break;
 default:
  echo 'cc';
}

//switch方法

switch( $i )
{
 case 1:
 case 2:
 case 3:
  $c =555;
  break;
 default:
  $c =2;
}

//看看if else

if( $i ==1 or $i ==3 or $i ==2 )
{
 $c =555;
}
else
{
 $c =2;
}
/*
从上面实例可以看出if else与switch case 比较区别如文章开头所有了。
本文章原创于www.111cn.net 转载注明出处

PHP被大量的应用Web的后台CGI开发,通常是在用户数据数据之后得出某种结果,但是如果用户输入的数据不正确,就会出现问题,比如说某人的生日是”2月30日”!那应该怎么样来检验暑假是否正确呢? 在PHP中加入了正则表达式的支持,让我们可以十分方便的进行数据匹配。
2 什么是正则表达式
简单的说,正则表达式是一种可以用于模式匹配和替换的强大工具。在几乎所有的基于UNIX/LINUX系统软件工具中找到正则表达式的痕迹,例如:Perl或PHP脚本语言。此外,JavaScript这种客户端的脚本语言也提供了对正则表达式的支持,现在正则表达式已经成为了一个通用的概念和工具,被各类技术人员所广泛使用。
在某个Linux网站上面有这样的话:”如果你问一下Linux爱好者最喜欢什么,他可能会回答正则表达式;如果你问他最害怕什么,除了繁琐的安装配置外他肯定会说正则表达式。”
正如上面说的,正则表达式看起来非常复杂,让人害怕,大多数的PHP初学者都会跳过这里,继续下面的学习,但是PHP中的正则表达式有着可以利用模式匹配找到符合条件的字符串、判断字符串是否合乎条件或者用指定的字符串来替代符合条件的字符串等强大的功能,不学实在太可惜了……
3 正则表达式的基本语法:
一个正则表达式,分为三个部分:分隔符,表达式和修饰符。
分隔符可以是除了特殊字符以外的任何字符(比如”/ !”等等),常用的分隔符是”/”。表达式由一些特殊字符(特殊字符详见下面)和非特殊的字符串组成,比如”[a-z0-9_-]+@[a-z0-9_-.]+”可以匹配一个简单的电子邮件字符串。修饰符是用来开启或者关闭某种功能/模式。下面就是一个完整的正则表达式的例子:
/hello.+?hello/is
上面的正则表达式”/”就是分隔符,两个”/”之间的就是表达式,第二个”/”后面的字符串”is”就是修饰符。
在表达式中如果含有分隔符,那么就需要使用转义符号”",比如”/www.111cn.net.+?/hello/is”。转义符号除了用于分隔符外还可以执行特殊字符,全部由字母构成的特殊字符都需要”"来转义,比如”d”代表全体数字。
4 正则表达式的特殊字符:
正则表达式中的特殊字符分为元字符、定位字符等等。
元字符是正则表达式中一类有特殊意义的字符,用来描述其前导字符(即元字符前面的字符)在被匹配的对象中出现的方式。元字符本身是一个个单一的字符,但是不同或者相同的元字符组合起来可以构成大的元字符。
元字符:
大括号:大括号用来精确指定匹配元字符出现的次数,例如”/pre{1,5}/”表示匹配的对象可以是”pre”、”pree”、”preeeee”这样在”pr”后面出现1个到5个”e”的字符串。或者”/pre{,5}/”代表pre出现0此到5次之间。
加号:”+”字符用来匹配元字符前的字符出现一次或者多次。例如”/ac+/”表示被匹配的对象可以是”act”、”account”、”acccc”等在”a”后面出现一个或者多个”c”的字符串。”+”相当于”{1,}”。
星号:”*”字符用来匹配元字符前的字符出现零次或者多次。例如”/ac*/”表示被匹配的对象可以是”app”、”acp”、”accp”等在”a”后面出现零个或者多个”c”的字符串。”*”相当于”{0,}”。
问号:”?”字符用来匹配元字符前的字符出现零次或者1次。例如”/ac?/”表示匹配的对象可以是”a”、”acp”、”acwp”这样在”a”后面出现零个或者1个”c”的字符串。”?”在正则表达式中还有一个非常重要的作用,即”贪婪模式”。
还有两个很重要的特殊字符就是”[ ]“。他们可以匹配”[]“之中出现过的字符,比如”/[az]/”可以匹配单个字符”a”或者”z”;如果把上面的表达式改成这样”/[a-z]/”,就可以匹配任何单个小写字母,比如”a”、”b”等等。
如果在”[]“中出现了”^”,代表本表达式不匹配”[]“内出现的字符,比如”/[^a-z]/”不匹配任何小写字母!并且正则表达式给出了几种”[]“的默认值:www.111cn.net
[:alpha:]:匹配任何字母
[:alnum:]:匹配任何字母和数字
[:digit:]:匹配任何数字
[:space:]:匹配空格符
[:upper:]:匹配任何大写字母
[:lower:]:匹配任何小写字母
[:punct:]:匹配任何标点符号
[:xdigit:]:匹配任何16进制数字
另外下面这些特殊字符在转义符号”"转义后代表的含义如下:
s:匹配单个的空格符
S:用于匹配除单个空格符之外的所有字符。
d:用于匹配从0到9的数字,相当于”/[0-9]/”。
w:用于匹配字母,数字或下划线字符,相当于”/[a-zA-Z0-9_]/”。
W:用于匹配所有与w不匹配的字符,相当于”/[^a-zA-Z0-9_]/”。
D:用于匹配任何非10进制的数字字符。
.:用于匹配除换行符之外的所有字符,如果经过修饰符”s”的修饰,”.”可以代表任意字符。
利用上面的特殊字符可以很方便的表达一些比较繁琐的模式匹配。例如”/d0000/”利用上面的正则表达式可以匹配万以上,十万一下的整数字符串。
定位字符:
定位字符是正则表达式中又一类非常重要的字符,它的主要作用是用于对字符在匹配对象中的位置进行描述。
^:表示匹配的模式出现在匹配对象的开头(和在”[]“里面不同)
$:表示匹配的模式出现在匹配对象的末尾
空格:表示匹配的模式出现在开始和结尾的两个边界之一
“/^he/”:可以匹配以”he”字符开头的字符串,比如hello、height等等;
“/he$/”:可以匹配以”he”字符结尾的字符串即she等;
“/ he/”:空格开头,和^的作用一样,匹配以he开头的字符串;
“/he /”:空格结束,和$的作用一样,匹配以he结尾的字符串;
“/^he$/”:表示只和字符串”he”匹配。
括号:
正则表达式除了可以用户匹配,还可以用括号”()”来记录需要的信息,储存起来,给后面的表达式读取。比如:
/^([a-zA-Z0-9_-]+)@([a-zA-Z0-9_-]+)(.[a-zA-Z0-9_-])$/
就是记录邮件地址的用户名,和邮件地址的服务器地址(形式为username@server.com之类的),在后面如果想要读取记录下来的字符串,只是需要用”转义符+记录的次序”来读取。比如”1″就相当于第一个”[a-zA-Z0-9_-]+”,”2″相当于第二个([a-zA-Z0-9_-]+),”3″就是第三个(.[a-zA-Z0-9_-])。但是在PHP中,”"是一个特殊的字符,需要转义,所以”"到了PHP的表达式中就应该写成”1″。
其他特殊符号:
“|”:或符号”|”和PHP里面的或一样,不过是一个”|”,而不是PHP的两个”||”!意思就是可以是某个字符或者另一个字符串,比如”/abcd|dcba/”可能匹配”abcd”或者”dcba”。
5 贪婪模式:
前面在元字符中提到过”?”还有一个重要的作用,即”贪婪模式”,什么是”贪婪模式”呢?
比如我们要匹配以字母”a”开头字母”b”结尾的字符串,但是需要匹配的字符串在”a”后面含有很多个”b”,比如”a bbbbbbbbbbbbbbbbb”,那正则表达式是会匹配第一个”b”还是最后一个”b”呢?如果你使用了贪婪模式,那么会匹配到最后一个”b”,反之只是匹配到第一个”b”。
使用贪婪模式的表达式如下:
/a.+?b/
/a.+b/U
不使用贪婪模式的如下:
/a.+b/
上面使用了一个修饰符U,详见下面的部分。
6 修饰符:
在正则表达式里面的修饰符可以改变正则的很多特性,使得正则表达式更加适合你的需要(注意:修饰符对于大小写是敏感的,这意味着”e”并不等于”E”)。正则表达式里面的修饰符如下:
i :如果在修饰符中加上”i”,则正则将会取消大小写敏感性,即”a”和”A” 是一样的。
m:默认的正则开始”^”和结束”$”只是对于正则字符串如果在修饰符中加上”m”,那么开始和结束将会指字符串的每一行:每一行的开头就是”^”,结尾就是”$”。
s:如果在修饰符中加入”s”,那么默认的”.”代表除了换行符以外的任何字符将会变成任意字符,也就是包括换行符!
x:如果加上该修饰符,表达式中的空白字符将会被忽略,除非它已经被转义。
e:本修饰符仅仅对于replacement有用,代表在replacement中作为PHP代码
A:如果使用这个修饰符,那么表达式必须是匹配的字符串中的开头部分。比如说”/a/A”匹配”abcd”。
E:与”m”相反,如果使用这个修饰符,那么”$”将匹配绝对字符串的结尾,而不是换行符前面,默认就打开了这个模式。
U:和问号的作用差不多,用于设置”贪婪模式”。
7 PCRE相关的正则表达式函数
PHP的Perl兼容正则表达式提供的多个函数,分为模式匹配,替换和匹配数目等等:
1、preg_match :
函数格式:int preg_match(string pattern, string subject, array [matches]);
这个函数会在string中使用pattern表达式来匹配,如果给定了[regs],就会将string记录到[regs][0]中,[regs][1]代表使用括号”()”记录下来的第一个字符串,[regs][2]代表记录下来的第二个字符串,以此类推。preg如果在string中找到了匹配的pattern,就会返回”true”,否则返回”false”。
2、preg_replace :
函数格式:mixed preg_replace(mixed pattern, mixed replacement, mixed subject);
这个函数会使用将string中符合表达式pattern的字符串全部替换为表达式replacement。如果replacement中需要包含pattern的部分字符,则可以使用”()”来记录,在replacement中只是需要用”1″来读取。
3、preg_split :
函数格式:array preg_split(string pattern, string subject, int [limit]);
这个函数和函数split一样,区别仅在与split可以使用简单正则表达式来分割匹配的字符串,而preg_split使用完全的Perl兼容正则表达式。第三个参数limit代表允许返回多少个符合条件的值。
4、preg_grep :
函数格式:array preg_grep(string patern , array input);
这个函数和preg_match功能基本上,不过preg_grep可以将给定的数组input中的所有元素匹配,返回一个新的数组。
下面举一个例子,比如我们要检查Email地址的格式是否正确:
<?php
function emailIsRight($email) {
if (preg_match(”^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3}$”,$email)) {
return 1;
}
return 0;
}
if(emailIsRight([email=]‘y10k@963.net’[/email])) echo ‘正确
‘;
if(!emailIsRight([email=]‘y10k@fffff’[/email])) echo ‘不正确
‘;
?>
[!--infotagslink--]

相关文章

  • 在java中获取List集合中最大的日期时间操作

    这篇文章主要介绍了在java中获取List集合中最大的日期时间操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-15
  • 教你怎么用Java获取国家法定节假日

    这篇文章主要介绍了教你怎么用Java获取国家法定节假日,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下...2021-04-23
  • mysql中获取一天、一周、一月时间数据的各种sql语句写法

    创建表:复制代码 代码如下:create table if not exists t( id int, addTime datetime default '0000-00-00 00:00:00′)添加两条初始数据:insert t values(1, '2012-07-12 21:00:00′);insert t values(2, '2012-07...2014-05-31
  • .NET/C# 使用Stopwatch测量运行时间

    这篇文章主要介绍了.NET/C# 使用Stopwatch测量运行时间,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
  • jquery validate demo 基础

    jQuery Validate 插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求。该插件捆绑了一套有用的验证方法,包括 URL 和电子邮件验证,同时提供了一个用来编写用户自...2015-10-30
  • MySQL中SELECT+UPDATE处理并发更新问题解决方案分享

    问题背景: 假设MySQL数据库有一张会员表vip_member(InnoDB表),结构如下: 当一个会员想续买会员(只能续买1个月、3个月或6个月)时,必须满足以下业务要求: &#8226;如果end_at早于当前时间,则设置start_at为当前时间,end_at为当前时...2014-05-31
  • 常用的日期时间正则表达式

    常用的日期时间正则表达式 下面收藏了大量的日期时间正则匹配函数,包括分钟,时间与秒都能达到。 正则表达式 (?n:^(?=d)((?<day>31(?!(.0?[2469]|11))|30(?!.0?2)|29(...2016-11-25
  • 非常全面的php日期时间运算汇总

    实例讲解之前,先来介绍几个核心函数: mktime 函数 mktime() 函数返回一个日期的 Unix 时间戳。 参数总是表示 GMT 日期,因此 is_dst 对结果没有影响。 参数可以从右到左依次空着,空着的参数会被设为相应的当前 GMT 值。...2015-11-08
  • C#中动态显示当前系统时间的实例方法

    想在网页中动态地显示当前系统的时间,找了好多,不过都是一些停在那里不动的。。。不过皇天不负有心人,终于让我找到了...2020-06-25
  • jquery validate demo 基础

    jQuery Validate 插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求。该插件捆绑了一套有用的验证方法,包括 URL 和电子邮件验证,同时提供了一个用来编写用户自...2015-10-30
  • postgresql 中的时间处理小技巧(推荐)

    这篇文章主要介绍了postgresql 中的时间处理小技巧(推荐),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-03-29
  • 从chrome调试工具中把拖延时间的东西找出来

    我打开android开发手册的时候:http://www.csdn123.com/html/android/reference/packages.html 发现打开速度很慢,我用按了一下F12打开调试面板,切换到网络的选项卡network...2016-05-19
  • C# 当前系统时间获取及时间格式详解

    这篇文章主要介绍了C# 当前系统时间获取及时间格式详解的相关资料,这里提供代码实例,帮助大家学习参考,需要的朋友可以参考下...2020-06-25
  • 帝国CMS显示指定时间内更新的信息数量

    /*解决代码高亮太长不换行*/ .syntaxhighlighter{word-break:break-all;} uParse('#newstext', {rootPath: '/e/extend/ueditor/'}) 帝国CMS显示指定时间内更新的信息数...2016-11-01
  • Mybatis执行update失败的解决

    这篇文章主要介绍了Mybatis执行update失败的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-01
  • C#使用TimeSpan时间计算的简单实现

    这篇文章主要给大家介绍了关于C#使用TimeSpan时间计算的相关资料,以及通过一个实例代码给大家介绍了C#使用timespan和timer完成一个简单的倒计时器的方法,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧...2020-06-25
  • 解决Mybatis中mapper.xml文件update,delete及insert返回值问题

    这篇文章主要介绍了解决Mybatis中mapper.xml文件update,delete及insert返回值问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-23
  • JavaScript时间操作之年月日星期级联操作

    这篇文章主要介绍了JavaScript时间操作之级联日期选择操作,涉及到年、月、日、星期,感兴趣的小伙伴们可以参考一下...2016-01-18
  • C#获取文件创建时间的方法

    这篇文章主要介绍了C#获取文件创建时间的方法,涉及C#文件操作的技巧及CreattionTime属性的使用方法,需要的朋友可以参考下...2020-06-25
  • PowerShell中使用Get-Date获取日期时间并格式化输出的例子

    这篇文章主要介绍了PowerShell中使用Get-Date获取日期时间并格式化输出的例子,本文讲解了直接调用Get-Date、在Write-Host中使用Get-Date、格式化输出的方法,需要的朋友可以参考下...2020-06-30