?php
创新互联公司2013年成立,是专业互联网技术服务公司,拥有项目成都网站设计、成都网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元仁寿做网站,已为上家服务,为仁寿各地企业和个人服务,联系电话:13518219792
$localhost = 'localhost';//本地的基本是用localhost
$dbname = 'dbname';//数据库名
$user = 'user';//用户名
$pw = 'pw';//密码
$pdo = new PDO("mysql:host=".$localhost.";dbname=".$dbname."",$user,$pw);
$pdo-query('set names utf8');
$username = $_POST['username'];
$userpassword = $_POST['userpassword'];
$sql = 'SELECT userpassword FROM `userinf` WHERE `username`="' . $username . '"';
$row = $pdo-query($sql)-fetch();//查询数据库
if($userpassword == $row['userpassword'])
{
@header("Location: http://网址");//配对成功,跳转
}
else
{
exit('不好意思,你的密码不对');
}
/*
就是这么的简单,但是一般的验证用户密码不是这样的,首先一般存数据库里面的密码都是加密的,通常的MD5加密
而且POST提交过来的数据也要过滤一下
*/
?
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ""
html xmlns=""
head
meta http-equiv="Content-Type" content="text/html; charset=utf-8" /
title用户登录验证/title
/head
body
form method="POST"
用户名:input name="username" type="text" / | 密码:input name="userpassword" type="password" / | input type="submit" value="提交"
/form
/body
/html
用file方法获得的数组元素是包含行结束符(换行符)的,所以直接比对的话肯定是不匹配的。可以用rtrim()函数把行结束符去掉再来比对,但建议最好换成逐行读取文件的方式而不是直接用file函数读取到数组中
正则是按位解析匹配的,所以[1-32]是不行的。
解析:
1、1-32,包含1位数(1-9)和2位数(10-32)
2、10-32必须切割,10-19和20-29形式一样,得到[12][0-9],30-32有3[012]
3、因此得到[1-9]|[12][0-9]|3[012]
4、考虑全匹配,因此得到/^(?:[1-9]|[12][0-9]|3[012])$/,
?:表示不捕获匹配,意思就是不保存括号数据
最终:
$pattern = '/^(?:[1-9]|[12][0-9]|3[012])$/'; //这个就是1-32的正则啦
你的已经是写“对”了的,只不过你没有提取数字而已。改一下模式:'/\(([\s\s]*?)\)/',这样就能利用$matchplayers[1]得到你要的数字了。在模式中,括号有子模式的作用,也就是从左到右,括号引起的数据从1开始到n,在匹配结果中用下标1到n提取。$matchplayers[0]则是总结果。详细参考php手册。
没看懂什么意思,你给个例子吧,包括原始数据时什么样的,最后结果是什么样的。我看你的语句,你是想把第一个数字后的所有东西都去掉吗?
你的正则不对是因为贪婪匹配的原因,第一个(.*)就把所有的东西都匹配了,后面的什么都没匹配到。
先用正则表达式匹配tr标签内的数据,再用正则表达式匹配td标签内的数据
完整的php程序如下
?php
$str = 'tr class="text-c"td1/tdtd2/tdtd3/tdtd4/tdtd5/tdtd6/tdtd7/tdtd8 18:55/td!--设防状态--td9/td!--围栏状态--td10/tdtd class="td-status"11/tdtd class="td-status"12/tdtd class="td-manage" style="max-width: 300px;"13/td/tr';
preg_match_all ('/tr class="text-c"(.+?)\/tr/im', $str, $result);
for ($i=0; $icount($result[1]); $i++) {
$s=$result[1][$i];
preg_match_all ('/td.*?(.+?)\/td/im', $s, $matches);
for ($j=0; $jcount($matches[1]); $j++) {
echo $matches[1][$j]."br";
}
}
?