php preg_match 支持换行正则表达式
php教程 preg_match 支持换行正则表达式
如果是根据内容自己,然后自己写的模式,为什么要写这么怪的模式呢。即使原来内容有换行,你模式也可以不使用换行啊。如果模式是存在数据库教程的
/<span class="realm tip" id="profile-info-realm" data-battlegroup="(.*)">
(.*)</span>/i
参考代码二
preg_match('/<span class="realm tip" id="profile-info-realm" data-battlegroup="(.*)">
(.*)</span>/i'
,$replacestr,$match);
第一个参数 是模式
"/正则/s"
$pat="/<span class="realm tip" id="profile-info-realm" data-battlegroup="(.*)">
(.*)</span>/is"
php教程基础语法入门教程
输出语句:
echo()、print().
eg:
echo 'hello','world';
注释:
#、//、/* */
变量:
必须以$开头,区分大小写,第一个字符必须是字母或下划线。
链接字符串:
两个字符串之间用点(.)连接
常量:
全部使用大写字母来命名常量,常量不会像变量那样使用美元符号。
define('name','value');
PHP运行时利用了几个预定义的常量,包括PHP_VERSION和PHP_OS(服务器的操作系统)
创建一个新的日期常量:
define('TODAY','February 3,2005');
echo 'Today is'.TODAY;
单引号和双引号的区别:
在单引号的字符按照字面意义进行处理,而在双引号中的值则将被解释。
处理HTML表单
<form action="" method="">
action后指示将其页面提交到指定的页面。
接受表单数据的PHP页面将把用户输入到这个表单的中的内容赋予一个称谓&_REQUEST['name']的特殊变量。其中要使用全拼大写,因为PHP对变量名区分大小写。name用于表示要提交的表单中指定的变量名。
1.php
<body>
<form action="2.php" method="get">
<fieldset><legend>Enter your information in the form below:</legend>
<p><b>name:</b><input type="text" name="name" size="20" maxlength="40"/></p>
<p><b>E-mail:</b><input type="text" name="email" size="40" maxlength="60"/></p>
<p><b>Gender:</b><input type="radio" name="gender" value="M"/>Male<input type="radio" name="gender" value="F"/>Female</p>
<p><b>Age:</b>
<select name="age">
<option value="0-29">Under 30</option>
<option value="30-60">Between 30 and 60</option>
<option value="60+"Over 60></option>
</select></p>
<p><b>Comments:</b><textarea name="comments" rows="3" cols="40"></textarea></p>
</fieldset>
<div align="center"><input type="submit" name="submit" value="Submit My Information"/></div>
</form>
</body>
运行如下:
2.php
当输入一些数据点submit时,会调用2.php:
<body>
<?php
$name=$_REQUEST['name'];
$email=$_REQUEST['email'];
$comments=$_REQUEST['comments'];
echo "<p>Thank you.<b>$name</b>.for the following comments:<br/><tt>$comments</tt></p>n";
?>
</body>
运行如下:
管理Magic Quotes(魔术引用):
对变量的值中的单引号和双引号进行转义。
如在上例中的comments中输入‘,则会显示'。
PHP中,有两类主要的Magic Quotes:magic_quotes_gpc,它适用于表单、URL和cookie数据(gpc代表get、post、cookie);magic_quotes_rentime,它适用于外部文件和数据库教程检索的数据。
如果在服务器上启用了Magic Quotes,则可以使用strips教程lashes()函数撤销它的作用。
$var=stripslashes($var);
这个函数将删除在$var中发现的任何反斜杠。在表单示例中,这具有把转义的提交字符串转变回其原来的未转义值的作用。
条件语句
If(isset($_REQUEST['gender']))
{
$gender=$_REQUEST['gender']
}
Else
{
$gender=NULL;
}
If($gender=='M')
{
...
}
验证表单数据
Isset()用于测试一个变量是否具有值(包括0、FALSE,或则一个空字符串,但不能是NULL)
但是使用此方法,若空字符串测试为TRUE,所以他不是验证HTML表单的文本输
入和文本框的有效方式。
empty()方法:
检查一个变量是否具有空值(empty):空字符串、0、NULL或FALSE。
eg:
if(!Empty(&_REQUEST['name']))
{
$name=stripslashes($_REQUEST['NAME'])
}
if($name)
{
…
}
要检测提交的值是否是数字,可使用is_numeric()函数。
可以使用strlen()函数来查看是否输入了0个以上的字符:
if(strlen($var)>0)
...
数组
数组可以构成一系列键-值对(key-value),其中每一对都是那个数组的一个项目或元素(element)。
PHP支持两种数组:索引数组(indexed array) 和联合数组(associative array),前者使用数字作为键,后者使用字符串作为键。索引数组的第一个索引开始于0,除非显示指定键。
数组遵守与任何其他变量相同的命名规则。
echo $ar[2];
echo $ar['MD']; --联合索引的键必须用单引号。
当数组使用字符串作为它的键时,输出格式为:
echo "{$array['IL']}";
当使用数字作为它的键时,输出格式为:
echo "$array[4]";
超全局数组:
$_GET、$_POST、$_SESSION、$_REQUEST、$_COOKIE等:
php使用$_GET来存储通过get方法发送到php脚本的所有变量和值。
$_POST存储使用post方法从HTML表单发送到php脚本的所有数据。
以及$_COOKIE,他们都是$_REQUEST的子集。
eg:
在前面的例子中,我们使用post获取所有元素,则可以直接用$_POST['name'],如:
$name=$_POST['name'];
创建数组:
1.一次向数组中添加一个元素:
$array[]="d";
$array['son']="BUJ";
2. 使用array()函数:
$arr=array('IA' => 'LH','MD' => 'MH');
不论是否显示地设置了键,都可以使用这个函数:
$arr=array('dd','asd');
如果设置了第一个具有数字键的值,则此后添加的值将具有递增的键:
$day=array(1=>'S','dd','ss') //$day[2]=dd,$day[3]=ss;
创建连续数字的数组,可以使用range()函数:
$ten=range(1,10);
访问数组:
foreach($array as $value)
{...}
foreach()循环将会迭代$array中的每个元素,并把每个元素的值赋予给$value变量。要访问键和值,可以使用:
foreach($array as $key=>value)
{
echo "The array value at $key is $value";
}
eg:
<form action="2.php" method="post">
<?php
$months=array(1=>'January','February','March');
$days=range(1,12);
$years=range(2000,2011);
echo '<select name="month">';
foreach($months as $key=>$value)
{
echo "<option value="$value">$value</option>n";
}
echo "</select>";
echo '<select name="days">';
foreach($days as $key=>$value)
{
echo "<option value="$value">$value</option>n";
}
echo "</select>";
echo '<select name="years">';
foreach($years as $key=>$value)
{
echo "<option value="$value">$value</option>n";
}
echo '</select>';
?>
要确定数组中的元素个数,可以使用count()或sizeof()函数:
$var =count($array);
从PHP4.1起,range()函数也可以创建连续字符的数组:
$var=range('a','z');
在foreach循环中不必使用名称$key和$value,但是,有些简写为$k和$v.
如果看到Invalid argument supplied for foreach()(为foreach()提供了无效的参数)出错消息,这意味
着你正尝试在不是数组的变量上使用foreach循环。
关于计算四则运算表达式方法简单的应用介绍有需要的朋友可以参考一下。<?php教程
2
3 /**
4 * 计算四则运算表达式
5 */
6
7 error_reporting(E_ALL);
8
9 $exp = '(1+2*(3+5)/4)*(3+(5-4)*2)';
10 $arr_exp = array();
11
12 for($i=0;$i<strlen($exp);$i++){
13 $arr_exp[] = $exp[$i];
14 }
15 $result = calcexp( array_reverse($arr_exp) );
16 echo $exp . '=' . $result;
17
18 function calcexp( $exp ){
19 $arr_n = array();
20 $arr_op = array();
21
22 while( ($s = array_pop( $exp )) != '' ){
23 if( $s == '(' ){
24 $temp = array(); $quote = 1; $endquote = 0;
25 while( ($t = array_pop($exp)) != '' ){
26 if( $t == '(' ){
27 $quote++;
28 }
29 if( $t == ')' ){
30 $endquote++;
31 if( $quote == $endquote ){
32 break;
33 }
34 }
35 array_push($temp, $t);
36 }
37 $temp = array_reverse($temp);
38 array_push($arr_n, calcexp($temp) );
39 }else if( $s == '*' || $s == '/' ){
40 $n2 = array_pop($exp);
41 if( $n2 == '(' ){
42 $temp = array(); $quote = 1; $endquote = 0;
43 while( ($t = array_pop($exp)) != '' ){
44 if( $t == '(' ){
45 $quote++;
46 }
47 if( $t == ')' ){
48 $endquote++;
49 if( $quote == $endquote )
50 break;
51 }
52 array_push($temp, $t);
53 }
54 $temp = array_reverse($temp);
55 $n2 = calcexp($temp);
56 }
57
58 $op = $s;
59 $n1 = array_pop($arr_n);
60
61 $result = operation($n1, $op, $n2);
62 array_push($arr_n, $result);
63 }elseif( $s == '+' || $s == '-' ){
64 array_push($arr_op, $s);
65 }else{
66 array_push($arr_n, $s);
67 }
68 }
69
70 $n2 = array_pop($arr_n);
71 while( ($op = array_pop($arr_op)) != '' ){
72 $n1 = array_pop($arr_n);
73 $n2 = operation($n1, $op, $n2);
74 }
75
76 return $n2;
77 }
78
79 function operation( $n1, $op, $n2 ){
80 switch ($op) {
81 case '+':
82 return intval($n1) + intval($n2);
83 break;
84 case '-':
85 return intval($n1) - intval($n2);
86 break;
87 case '*':
88 return intval($n1) * intval($n2);
89 break;
90 case '/':
91 return intval($n1) / intval($n2);
92 break;
93 }
常用的日期时间正则表达式
下面收藏了大量的日期时间正则匹配函数,包括分钟,时间与秒都能达到。
正则表达式 (?n:^(?=d)((?<day>31(?!(.0?[2469]|11))|30(?!.0?2)|29(?(.0?2)(?=.{3,4}(1[6-9]|[2-9]d)(0[48]|[2468][048]|[13579][26])|(16|[2468][048]|[3579][26])00))|0?[1-9]|1d|2[0-8])(?<sep>[/.-])(?<month>0?[1-9]|1[012])2(?<year>(1[6-9]|[2-9]d)d{2})(?:(?=x20d)x20|$))?(?<time>((0?[1-9]|1[012])(:[0-5]d){0,2}(?i: [AP]M))|([01]d|2[0-3])(:[0-5]d){1,2})?$)
匹配 31/12/2003 | 29/2/2004 4:50 PM | 23:59:59
不匹配 12/31/2003 | 29/2/2003 | 4:00
正则表达式 ^(?:(?:31(/|-|.)(?:0?[13578]|1[02]))1|(?:(?:29|30)(/|-|.)(?:0?[1,3-9]|1[0-2])2))(?:(?:1[6-9]|[2-9]d)?d{2})$|^(?:29(/|-|.)0?23(?:(?:(?:1[6-9]|[2-9]d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1d|2[0-8])(/|-|.)(?:(?:0?[1-9])|(?:1[0-2]))4(?:(?:1[6-9]|[2-9]d)?d{2})$
匹配 29/02/1972 | 5-9-98 | 10-11-2002
不匹配 29/02/2003 | 12/13/2002 | 1-1-1500
正则表达式 ^(?:(((Jan(uary)?|Ma(r(ch)?|y)|Jul(y)?|Aug(ust)?|Oct(ober)?|Dec(ember)?) 31)|((Jan(uary)?|Ma(r(ch)?|y)|Apr(il)?|Ju((ly?)|(ne?))|Aug(ust)?|Oct(ober)?|(Sept|Nov|Dec)(ember)?) (0?[1-9]|([12]d)|30))|(Feb(ruary)? (0?[1-9]|1d|2[0-8]|(29(?=, ((1[6-9]|[2-9]d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))))), ((1[6-9]|[2-9]d)d{2}))
匹配 Jan 1, 2003 | February 29, 2004 | November 02, 3202
不匹配 Feb 29, 2003 | Apr 31, 1978 | jan 33,3333
正则表达式 ^(([0-1]?[0-9])|([2][0-3])):([0-5]?[0-9])(:([0-5]?[0-9]))?$
匹配 12:15 | 10:26:59 | 22:01:15
不匹配 24:10:25 | 13:2:60
正则表达式 (?=d)^(?:(?!(?:10D(?:0?[5-9]|1[0-4])D(?:1582))|(?:0?9D(?:0?[3-9]|1[0-3])D(?:1752)))((?:0?[13578]|1[02])|(?:0?[469]|11)(?!/31)(?!-31)(?!.31)|(?:0?2(?=.?(?:(?:29.(?!000[04]|(?:(?:1[^0-6]|[2468][^048]|[3579][^26])00))(?:(?:(?:dd)(?:[02468][048]|[13579][26])(?!x20BC))|(?:00(?:42|3[0369]|2[147]|1[258]|09)x20BC))))))|(?:0?2(?=.(?:(?:dD)|(?:[01]d)|(?:2[0-8])))))([-./])(0?[1-9]|[12]d|3[01])2(?!0000)((?=(?:00(?:4[0-5]|[0-3]?d)x20BC)|(?:d{4}(?!x20BC)))d{4}(?:x20BC)?)(?:$|(?=x20d)x20))?((?:(?:0?[1-9]|1[012])(?::[0-5]d){0,2}(?:x20[aApP][mM]))|(?:[01]d|2[0-3])(?::[0-5]d){1,2})?$
匹配 11/24/0004 11:59 PM | 2.29.2008 | 02:50:10
不匹配 12/33/1020 | 2/29/2005 | 13:00 AM
正则表达式 ^([0]?[1-9]|[1|2][0-9]|[3][0|1])[./-]([0]?[1-9]|[1][0-2])[./-]([0-9]{4}|[0-9]{2})$
匹配 10/03/1979 | 1-1-02 | 01.1.2003
不匹配 10/03/197 | 09--02--2004 | 01 02 03
正则表达式 ^((0?[13578]|10|12)(-|/)(([1-9])|(0[1-9])|([12])([0-9]?)|(3[01]?))(-|/)((19)([2-9])(d{1})|(20)([01])(d{1})|([8901])(d{1}))|(0?[2469]|11)(-|/)(([1-9])|(0[1-9])|([12])([0-9]?)|(3[0]?))(-|/)((19)([2-9])(d{1})|(20)([01])(d{1})|([8901])(d{1})))$
匹配 1/2/03 | 02/30/1999 | 3/04/00
不匹配 3/4/2020 | 3/4/1919 | 4/31/2000
正则表达式 ^([2-9]d{3}((0[1-9]|1[012])(0[1-9]|1d|2[0-8])|(0[13456789]|1[012])(29|30)|(0[13578]|1[02])31)|(([2-9]d)(0[48]|[2468][048]|[13579][26])|(([2468][048]|[3579][26])00))0229)$
匹配 20000101 | 20051231 | 20040229
不匹配 19990101 | 20053112 | 20050229
正则表达式 ^([1-9]|1[0-2]|0[1-9]){1}(:[0-5][0-9][aApP][mM]){1}$
匹配 08:00AM | 10:00am | 7:00pm
不匹配 13:00pm | 12:65am
正则表达式 ^(([1-9])|(0[1-9])|(1[0-2]))/(([0-9])|([0-2][0-9])|(3[0-1]))/(([0-9][0-9])|([1-2][0,9][0-9][0-9]))$
匹配 01/01/2001 | 1/1/1999 | 10/20/2080
不匹配 13/01/2001 | 1/1/1800 | 10/32/2080
正则表达式 ^d{1,2}/d{1,2}/d{4}$
匹配 4/1/2001 | 12/12/2001 | 55/5/3434
不匹配 1/1/01 | 12 Jan 01 | 1-1-2001
正则表达式 (d{2}|d{4})(?:-)?([0]{1}d{1}|[1]{1}[0-2]{1})(?:-)?([0-2]{1}d{1}|[3]{1}[0-1]{1})(?:s)?([0-1]{1}d{1}|[2]{1}[0-3]{1})(?::)?([0-5]{1}d{1})(?::)?([0-5]{1}d{1})
匹配 00-00-00 00:00:00 | 0000-00-00 00:00:00 | 09-05-22 08:16:00 | 1970-00-00 00:00:00 | 20090522081600
不匹配 2009-13:01 00:00:00 | 2009-12-32 00:00:00 | 2002-12-31 24:00:00 | 2002-12-31 23:60:00 | 02-12-31 23:00:60
正则表达式 ^(?=d)(?:(?!(?:1582(?:.|-|/)10(?:.|-|/)(?:0?[5-9]|1[0-4]))|(?:1752(?:.|-|/)0?9(?:.|-|/)(?:0?[3-9]|1[0-3])))(?=(?:(?!000[04]|(?:(?:1[^0-6]|[2468][^048]|[3579][^26])00))(?:(?:dd)(?:[02468][048]|[13579][26]))D0?2D29)|(?:d{4}D(?!(?:0?[2469]|11)D31)(?!0?2(?:.|-|/)(?:29|30))))(d{4})([-/.])(0?d|1[012])2((?!00)[012]?d|3[01])(?:$|(?=x20d)x20))?((?:(?:0?[1-9]|1[012])(?::[0-5]d){0,2}(?:x20[aApP][mM]))|(?:[01]d|2[0-3])(?::[0-5]d){1,2})?$
匹配 0008-02-29 | 2:34:59 PM | 9999/12/31 11:59 PM
不匹配 04/04/04 | 1:00 | 1999/1/32
正则表达式 ^(([1-9]{1})|([0-1][0-9])|([1-2][0-3])):([0-5][0-9])$
匹配 00:00 | 23:59 | 10:10
不匹配 24:00 | 00:60 | 25:61
正则表达式 ^[0-9]{4}-(((0[13578]|(10|12))-(0[1-9]|[1-2][0-9]|3[0-1]))|(02-(0[1-9]|[1-2][0-9]))|((0[469]|11)-(0[1-9]|[1-2][0-9]|30)))$
匹配 2004-04-30 | 2004-02-29
不匹配 2004-04-31 | 2004-02-30
这里只给初学者用的一些参考教程,告诉你如何实现用户登录,我们是利用php教程 mysql教程做的希望对你有所帮助。
$userid=trim($_POST["username"]);
$userpass=trim($_POST["password"]);
$admin_pass=substr(md5($userpass),0,32); //数据库教程密码echo $userid."<br>".$admin_pass."<br>"; //输出用户和密码[post获取];
$mysql=new db_mysql(false);
$query="select * from #@_admin where admin_id like '".$userid."' limit 0,1"; //查询密码是否存在用户名
echo $query."<br>";
$mysql->SetQuery($query);
$mysql->Execute();
$row=$mysql->GetObject();
echo "数据库密码:".$row->admin_pass." post获取密码:".$admin_pass;
//exit;
if(!isset($row->admin_id)) //用户名错误
{
ShowMsg("用户名错误","../");
$mysql->Close();
return 0;
}
else if($row->admin_pass!=$admin_pass) //密码错误
{
ShowMsg("密码错误","../");
$mysql->Close();
return -1;
}
else
{
ShowMsg("登录成功","../");
$mysql->Close();
return 1;
}
相关文章
- 取双引号内的内容我们如果一个字符串中只有一个可以使用explode来获得,但如果有多个需要使用正则表达式来提取了,具体的例子如下。 写程序的时候总结一点经验,如何只...2016-11-25
- 这篇文章主要给大家介绍了一个关于JS正则匹配的踩坑记录,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-04-13
- 今天遇到一个正则匹配的问题,忽然翻到有捕获组的概念,手册上也是一略而过,百度时无意翻到C#和Java中有对正则捕获组的特殊用法,搜索关键词有PHP时竟然没有相关内容,自己试了一下,发现在PHP中也是可行的,于是总结一下,分享的同...2015-11-08
- 正则表达式是一门非常有用的并且进行模糊判断的一个功能了,我们下面来看通过正则来验证输入汉字、英语、数字,具体如下。 收藏了正则表达式。可以验证只能输入数...2016-11-25
- 这篇文章主要介绍了java正则表达式判断前端参数修改表中另一个字段的值,需要的朋友可以参考下...2021-05-07
- 常用的日期时间正则表达式 下面收藏了大量的日期时间正则匹配函数,包括分钟,时间与秒都能达到。 正则表达式 (?n:^(?=d)((?<day>31(?!(.0?[2469]|11))|30(?!.0?2)|29(...2016-11-25
- 网址规则是可寻的,所以我们可以使用正则表达式来提取字符串中的url地址了,下面一起来看看小编整理的几个PHP正则表达式匹配验证提取网址URL实例. 匹配网址 URL 的...2016-11-25
- 这篇文章给大家详细介绍了JS中使用正则表达式g模式和非g模式的区别,非常不错,具有参考借鉴价值,需要的朋友参考下吧...2017-04-03
- 这篇文章主要介绍了正则表达式中两个反斜杠的匹配规则,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-05-07
- 这篇文章主要介绍了JS基于正则截取替换特定字符之间字符串操作方法,结合具体实例形式分析了JS基于正则实现针对特殊字符、数字等字符串类型的截取操作相关技巧,需要的朋友可以参考下...2017-02-08
- 本文主要介绍了JavaScript利用正则表达式替换字符串中内容的具体实现方法,并做了简要注释,便于理解。具有一定的参考价值,需要的朋友可以看下...2017-01-09
- 这篇文章主要介绍了C#正则表达式使用方法,大家参考使用...2020-06-25
- c#正则表达式,用于字符串处理、表单验证等场合,实用高效。现将一些常用的表达式收集于此,以备不时之需。...2020-06-25
- 这篇文章主要介绍了python正则表达式常用函数及使用方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-05-07
- 这篇文章给大家介绍了Idea使用正则表达式批量替换字符串的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧...2021-07-21
- 关于匹配字符串问题,有很多种类型,今天讨论 js 代码里的字符串匹配,因为我想学完之后写个语法高亮练手,所以用js代码当作例子...2021-05-07
- 今天遇到一个正则匹配的问题,忽然翻到有捕获组的概念,手册上也是一略而过,百度时无意翻到C#和Java中有对正则捕获组的特殊用法,搜索关键词有PHP时竟然没有相关内容,自己试了一下,发现在PHP中也是可行的,于是总结一下,分享的同...2015-11-08
javascript 手机号码正则表达式验证函数 <font color=red>原创</font>
随着手机号码段的不断增加,以前网上的手机号码验证函数都不能那么完美的支持了,这里脚本之家编辑特为大家准备的一个简单的正则与手机验证的函数分析。...2021-05-07- 正则表达式的作用用来描述字符串的特征。本文重点给大家介绍C# 中使用正则表达式匹配字符的含义,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧...2020-06-25
- 这篇文章主要给大家介绍了关于利用Python验证的50个常见正则表达式的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-11