php用户注册时常用的一些常用总结
代码如下 | 复制代码 |
<?php /** * Check检测类 */ Class Check{ /** * IsUsername函数:检测是否符合用户名格式 * $Argv是要检测的用户名参数 * $RegExp是要进行检测的正则语句 * 返回值:符合用户名格式返回用户名,不是返回false */ function IsUsername($Argv){ $RegExp=/^[a-zA-Z0-9_]{3,16}$/; //由大小写字母跟数字组成并且长度在3-16字符直接 return preg_match($RegExp,$Argv)?$Argv:false; } /** * IsMail函数:检测是否为正确的邮件格式 * 返回值:是正确的邮件格式返回邮件,不是返回false */ function IsMail($Argv){ $RegExp=/^[a-z0-9][a-z.0-9-_] @[a-z0-9_-] (?:.[a-z]{0,3}.[a-z]{0,2}|.[a-z]{0,3}|.[a-z]{0,2})$/i; return preg_match($RegExp,$Argv)?$Argv:false; } /** * IsSmae函数:检测参数的值是否相同 * 返回值:相同返回true,不相同返回false */ function IsSame($ArgvOne,$ArgvTwo,$Force=false){ return $Force?$ArgvOne===$ArgvTwo:$ArgvOne==$ArgvTwo; } /** * IsQQ函数:检测参数的值是否符合QQ号码的格式 * 返回值:是正确的QQ号码返回QQ号码,不是返回false */ function IsQQ($Argv){ $RegExp=/^[1-9][0-9]{5,11}$/; return preg_match($RegExp,$Argv)?$Argv:false; } /** * IsMobile函数:检测参数的值是否为正确的中国手机号码格式 * 返回值:是正确的手机号码返回手机号码,不是返回false */ function IsMobile($Argv){ $RegExp=/^(?:13|15|18)[0-9]{9}$/; return preg_match($RegExp,$Argv)?$Argv:false; } /** * IsTel函数:检测参数的值是否为正取的中国电话号码格式包括区号 * 返回值:是正确的电话号码返回电话号码,不是返回false */ function IsTel($Argv){ $RegExp=/[0-9]{3,4}-[0-9]{7,8}$/; return preg_match($RegExp,$Argv)?$Argv:false; } /** * IsNickname函数:检测参数的值是否为正确的昵称格式(Beta) * 返回值:是正确的昵称格式返回昵称格式,不是返回false */ function IsNickname($Argv){ $RegExp = '/^s*$|^c:\con\con$|[%,*"st<>&'()]|xA1xA1|xACxA3|^Guest|^xD3xCExBFxCD|xB9x43xABxC8/is'; //Copy From DZ return preg_match($RegExp,$Argv)?$Argv:false; } /** * IsChinese函数:检测参数是否为中文 * 返回值:是返回参数,不是返回false */ function IsChinese($Argv,$Encoding=utf8){ $RegExp = $Encoding==utf8?/^[x{4e00}-x{9fa5}] $/u:/^([x80-xFF][x80-xFF]) $/; Return preg_match($RegExp,$Argv)?$Argv:False; } } ?> |
分享一个实际在用的函数:
file_get_contents() 函数是用于将文件的内容读入到一个字符串中的首选方法。如果操作系统支持,还会使用内存映射技术来增强性能。
/*比file_get_contents稳定的多!$timeout为超时时间,单位是秒,默认为1s。*/
代码如下 | 复制代码 |
function curl_get_contents($url,$timeout=1) { $curlHandle = curl_init(); curl_setopt( $curlHandle , CURLOPT_URL, $url ); curl_setopt( $curlHandle , CURLOPT_RETURNTRANSFER, 1 ); curl_setopt( $curlHandle , CURLOPT_TIMEOUT, $timeout ); $result = curl_exec( $curlHandle ); curl_close( $curlHandle ); return $result; } $hx = curl_get_contents('http://www.111cn.net/'); |
相信使用过file_get_contents函数的朋友都知道,当获取的$url访问不了时,会导致页面漫长的等待,甚至还能导致PHP进程占用CPU达100%,因此这个函数就诞生了。
通过php.ini中的default_socket_timeout设置,默认超时时间是default_socket_timeout = 60
代码如下 | 复制代码 |
max_execution_time = 30 default_socket_timeout = 60 |
假设你使用file_get_contents花费45,而max_execution_time是30,它将超时吗?
答案是NO,因为max_execution_time不影响操作系统调用或stream操作
另一点要指出的的是default_socket_timeout是在socket响应之前计算的,只要得到响应,将会一直执行下去
可以通过以下三种方式设置
代码如下 | 复制代码 |
1 直接在php.ini中修改 default_socket_timeout =120 |
curl的一些常识介绍
保留原file_get_contents函数的原因是当读取本地文件时,用原生的file_get_contents显然更合适。
另来自张宴的file_get_contnets的优化,具体可看:
首先,使用 top 命令查看 CPU 使用率较高的 php-cgi 进程。
代码如下 | 复制代码 |
top - 10:34:18 up 724 days, 21:01, 3 users, load average: 17.86, 11.16, 7.69 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 找其中一个 CPU 100% 的 php-cgi 进程的 PID,用以下命令跟踪一下: strace -p 10747 |
如果屏幕显示:
代码如下 | 复制代码 |
select(7, [6], [6], [], {15, 0}) = 1 (out [6], left {15, 0}) |
那么,就可以确定是 file_get_contents() 导致的问题了。
同样是设置超时时间来解决这个问题。如果没装curl,就必须得用这个方式了。
代码如下 | 复制代码 |
$ctx = stream_context_create(array( |
1,年-月-日
echo date('Y-m-j');
2007-02-6
echo date('y-n-j');
07-2-6
大写Y表示年四位数字,而小写y表示年的两位数字;
小写m表示月份的数字(带前导),而小写n则表示不带前导的月份数字。
echo date('Y-M-j');
2007-Feb-6
echo date('Y-m-d');
2007-02-06
大写M表示月份的3个缩写字符,而小写m则表示月份的数字(带前导0);
没有大写的J,只有小写j表示月份的日期,无前导o;若需要月份带前导则使用小写d。
echo date('Y-M-j');
2007-Feb-6
echo date('Y-F-jS');
2007-February-6th
大写M表示月份的3个缩写字符,而大写F表示月份的英文全写。(没有小写f)
大写S表示日期的后缀,比如“st”、“nd”、“rd”和“th”,具体看日期数字为何。
小结:
表示年可以用大写的Y和小写y;
表示月可以用大写F、大写M、小写m和小写n(分别表示字符和数字的两种方式);
表示日可以用小写d和小写j,大写S表示日期的后缀。
2,时:分:秒
默认情况下,PHP解释显示的时间为“格林威治标准时间”,与我们本地的时间相差8个小时。
echo date('g:i:s a');
5:56:57 am
echo date('h:i:s A');
05:56:57 AM
小写g表示12小时制,无前导0,而小写h则表示有前导0的12小时制。
当使用12小时制时需要表明上下午,小写a表示小写的“am”和“pm”,大写A表示大写的“AM”和“PM”。
echo date('G:i:s');
14:02:26
大写G表示24小时制的小时数,但是不带前导的;使用大写的H表示带前导的24小时制小时数
小结:
字母g表示小时不带前导,字母h表示小时带前导;
小写g、h表示12小时制,大写G、H表示24小时制。
3,闰年、星期、天
echo date('L');
今年是否闰年:0
echo date('l');
今天是:Tuesday
echo date('D');
今天是:Tue
大写L表示判断今年是否闰年,布尔值,为真返回1,否则为0;
小写l表示当天是星期几的英文全写(Tuesday);
而使用大写D表示星期几的3个字符缩写(Tue)。
echo date('w');
今天星期:2
echo date('W');
本周是全年中的第 06 周
小写w表示星期几,数字形式表示
大写W表示一年中的星期数
echo date('t');
本月是 28 天
echo date('z');
今天是今年的第 36 天
小写t表示当前月份又多少天
小写z表示今天是本年中第几天
将日间日期转换成时间时间戳
strtotime(time,now)参数 描述
time 规定要解析的时间字符串。
now 用来计算返回值的时间戳。如果省略该参数,则使用当前时间。
<?php
echo strtotime("now"), "n";
echo strtotime("10 September 2000"), "n";
echo strtotime("+1 day"), "n";
echo strtotime("+1 week"), "n";
echo strtotime("+1 week 2 days 4 hours 2 seconds"), "n";
echo strtotime("next Thursday"), "n";
echo strtotime("last Monday"), "n";
?>
<?php
$str = 'Not Good';
// previous to PHP 5.1.0 you would compare with -1, instead of false
if (($timestamp = strtotime($str)) === false) {
echo "The string ($str) is bogus";
} else {
echo "$str == " . date('l dS of F Y h:i:s A', $timestamp);
}
?>
再看strtotime实例
*/
echo strtotime('2010-2-14'),"<br />";
echo date('Y-m-d',strtotime('2010-2-14'));
//输出值
1266076800
2010-02-14
//你应该在strtotime(),你决定什么不能做。例如
<?php
# on 2/8/2010
date('m/d/y', strtotime('first day')); # 02/01/10
date('m/d/y', strtotime('last day')); # 02/28/10
date('m/d/y', strtotime('last day next month')); # 03/31/10
date('m/d/y', strtotime('last day last month')); # 01/31/10
date('m/d/y', strtotime('2009-12 last day')); # 12/31/09 - this doesn't work if you reverse the order of the year and month
date('m/d/y', strtotime('2009-03 last day')); # 03/31/09
date('m/d/y', strtotime('2009-03')); # 03/01/09
date('m/d/y', strtotime('last day of march 2009')); # 03/31/09
date('m/d/y', strtotime('last day of march')); # 03/31/10
?>
更多相关函数
date_default_timezone_set('PRC'); //默认时区
$t = time();
$today=date("Y-m-d",time());
echo "今天:$today<br />";
echo "某一天:".date("Y-m-d",strtotime("18 june 2008"))."<br />";
echo "昨天:".date("Y-m-d",strtotime("-1 day"))."<br />";
echo "明天:".date("Y-m-d",strtotime("+1 day"))."<br />";
echo "一周后:".date("Y-m-d",strtotime("+1 week"))."<br />";
echo "一周零两天四小时两秒后:".date("Y-m-d G:H:s",strtotime("+1 week 2 days 4 hours 2 seconds"))."<br />";
echo "下个星期四:".date("Y-m-d",strtotime("next Thursday"))."<br />";
echo "上个周一:".date("Y-m-d",strtotime("last Monday"))."<br />";
echo "一个月前:".date("Y-m-d",strtotime("last month"))."<br />";
echo "一个月后:".date("Y-m-d",strtotime("+1 month"))."<br />";
echo "十年后:".date("Y-m-d",strtotime("+10 year"))."<br />";
echo "<br />=======================================================<br /><br />";
$w = date("w",time()); //获取今天是本周周几
echo "今天是星期$w<br />";
$d=array("日","一","二","三","四","五","六");
$whatday="星期".$d[date("w",strtotime($today))]; //获取今天星期几
echo "今天是$whatday<br />";
$d0 = date("Y-m-d",strtotime("-$w day",$t)); //周开始
echo "本周周日是:$d0<br />";
$d6 = date("Y-m-d",strtotime((6-$w)." day",$t)); //周结束
echo "本周周六是:$d6<br />";
echo "本周周日是:".date("Y-m-d",strtotime("Sunday"))."<br />"; //周开始
echo "本周周六是:".date("Y-m-d",strtotime("Saturday"))."<br />"; //周结束
echo "上周周日是:".date("Y-m-d",strtotime("last Sunday"))."<br />"; //上周开始
echo "上周周六是:".date("Y-m-d",strtotime("last Saturday"))."<br />"; //上周结束
echo "<br />=======================================================<br /><br />";
$time = abs((strtotime("2012-12-21") - strtotime(date("Y-m-d")))/86400);//获取两个日期之间的天数差
echo "距离世界末日还有:$time 天<br />"; //上周结束
1. 判断Email:
代码如下 | 复制代码 |
<?php |
2. 判断Url:
代码如下 | 复制代码 |
function is_url($str){ |
3. 判断手机号码:
代码如下 | 复制代码 |
function is_mobile($str){ |
代码如下:
代码如下 | 复制代码 |
function get_between($input, $start, $end) { $substr = substr($input, strlen($start)+strpos($input, $start), (strlen($input) - strpos($input, $end))*(-1)); return $substr; } $string = "www.111cn.net"; $start = "www."; $end = ".com"; echo get_between($string, $start, $end); // output:hzhuti |
不过这个函数有个局限,就是$start子串和$end子串在整个串中只能出现一次。请看下面的例子:
代码如下 | 复制代码 |
$string = "http://www.111cn.net/"; $start = "http://"; $end = "/"; |
很明显我想获取这个标准URL的域名部分,由于$end子串在整个串中不是唯一的,所以就会出现问题,请使用时务必注意!
例
如
NAS/NMS COMPSITE (NasdaqSC:^IXIC) Quote data by ReutersIndex Value:2,030.08Trade Time:5:16PM ETChange: 35.40 (1.71%)Prev Close:2,065.48Open:2,072.95Day 's Range:2,026.20 - 2,073.4252wk Range:1,359.32 - 2,153.831d
这样的一个字符串,我要截取Index Value:和Trade Time:之间的数据2,030.08,怎么截取?我要通用的方法
代码
代码如下 | 复制代码 |
<?php |
相关文章
- php 获取用户IP与IE信息程序 function onlineip() { global $_SERVER; if(getenv('HTTP_CLIENT_IP')) { $onlineip = getenv('HTTP_CLIENT_IP');...2016-11-25
- 这篇文章主要介绍了C# 10个常用特性,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-09
- php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p> </p> <p> </p> <form name="form1...2016-11-25
Ruby on Rails实现最基本的用户注册和登录功能的教程
这里我们主要以has_secure_password的用户密码验证功能为中心,来讲解Ruby on Rails实现最基本的用户注册和登录功能的教程,需要的朋友可以参考下...2020-06-30- 当来访者浏览器语言是中文就进入中文版面,国外的用户默认浏览器不是中文的就跳转英文页面。 <?php $lan = substr( $HTTP_ACCEPT_LANGUAGE,0,5); if ($lan == "zh-cn") print("<meta http-equiv='refresh' c...2015-11-08
- 一个用Javascript检测用户输入密码强度的效果代码,以下代码主要是从以下四个方面检测用户输入的密码的强度的,有兴趣的朋友可以自己添加或修改成自己想要的形式! 1. 如果输入的密码位数少于5位,那么就判定为弱。 2. 如果...2015-10-23
- 【问题描述】:同一用户在同一时间多次登录如果不能检测出来,是危险的。因为,你无法知道是否有其他用户在登录你的账户。如何禁止同一用户多次登录呢? 【解决方案】 (1) 每次登录,身份认证成功后,重新产生一个session_id。 s...2015-11-24
- 这是注册程序是一款当用户输入完用户名是,就会自动去数据库中查询用户要注册的用户名是否己经被注册了,如果是返回提示否则提示可以注册。 conn.php文件 代...2016-11-25
- 这篇文章主要为大家详细介绍了Android实现简单用户注册案例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-05-26
- 这篇文章主要给大家介绍了关于微信小程序用户授权最佳实践的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-05-08
- cookie 的用途之一是存储用户在特定网站上的密码和 id。另外,也用于存储起始页的首选项。在提供个人化查看的网站上,将要求阁下的网络浏览器利用阁下计算机硬驱上的少量...2016-11-25
- 注册页面是大多数网站必备的页面,所以很有必要对自己的注册页面做些精心的设计。下面三张图,第一张是注册的展示页面,第二张思维导图就一个简单的逻辑,第三张是通过firebug查看调用的JS文件。 一、给每个输入框写下说明在...2015-11-24
- 知识归纳因为MySQL是使用User和Host两个字段来确定用户身份的,这样就带来一个问题,就是一个客户端到底属于哪个host。 如果一个客户端同时匹配几个Host,对用户的确定将按照下面的优先级来排 基本观点越精确的匹配越优先...2015-11-08
- 这篇文章主要介绍了sqlserver添加sa用户和密码的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-05-07
- 第一,网站的内容;请各位站长朋友不要一天到晚只想着出什么好的绝招来推广网站,却忽略了网站的内容;其实网站的内容是极为重要的,因为这是你的本,你的根!网站的内容只有不断...2017-07-06
- 装完数据库清理一些默认账号的时候不小心把root删除了,flush privileges 之后的新 root 忘了grant任何权限,查看mysqld选项里面有个 −−skip-grant-tables复制代码 代码如下: #/usr/libexec/mysqld --verbos...2015-03-15
Win2012服务器 远程桌面帐户允许多用户同时登录的配置方法
这篇文章主要介绍了Win2012服务器 远程桌面帐户允许多用户同时登录的配置方法,需要的朋友可以参考下...2016-11-01- 这篇文章主要介绍了关于JSP用户登录连接数据库的相关资料,需要的朋友可以参考下面文章内容...2021-09-07
- 一位站长译的一个国外的如何判断用户是否访问过某个网址文章,个人感觉写得非常不错,下面分享一下。 我们经常有这样的需求:想知道用户之前有没有访问过某个网址。有...2016-09-20
- 通过本教程可以实现帝国CMS后台给前台注册用户发消息,把内容输入框改为编辑器,可上传图片,等打开文件\e\admin\member\SendMsg.php 大约84行<textarea name="msgtext" cols="6...2016-01-27