php基础语法入门教程
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循环。
DEDE软件下载模块中添加下载方式为迅雷下载联盟代码
修改 /plus/download.php教程 文件
查找
<?php
在它上面加入 Dede教程-598080707.NET
<script src="http://ps教程tatic.xunlei.com/js/webThunderDetect.js"></script>
在它下面加入
require("encode.inc");
查找
else if($open==1){
$link = base64_decode($link);
echo "<script language='网页特效'>location="$link";</script>";
exit();
替换为
else if($open==1){
$link = base64_decode($link);
$Url = ("http://asqq8.net/url".$link);
$thunderUrl = ThunderEncode($Url);
echo "<script>OnDownloadClick('".$thunderUrl."','',location.href,'你的联盟id',2,'')</script>";
exit();
}
把迅雷联盟的 encode.inc 文件 放到 plus 目录
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教程
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
相关文章
- 轻松学习C#的基础入门,了解C#最基本的知识点,C#是一种简洁的,类型安全的一种完全面向对象的开发语言,是Microsoft专门基于.NET Framework平台开发的而量身定做的高级程序设计语言,需要的朋友可以参考下...2020-06-25
- 这篇文章算是超级入门级别的了,我们下面来给各位介绍在photoshop画斜线/直线/虚线的教程了,希望下面这篇文章给你入门来帮助。 PS怎么画斜线 选择铅笔工具,或者画笔...2016-09-14
- 这篇文章主要给大家介绍的是关于Lua语言新手入门的简单教程,文中通过示例代码一步步介绍的非常详细,对各位新手们的入门提供了一个很方便的教程,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。...2020-06-30
- 这篇文章主要为大家分享了20分钟MySQL基础入门教程,快速掌握MySQL基础知识,真正了解MySQL,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-12-02
- 一、下载pthreads扩展下载地址:http://windows.php.net/downloads/pecl/releases/pthreads二、判断PHP是ts还是nts版通过phpinfo(); 查看其中的 Thread Safety 项,这个项目就是查看是否是线程安全,如果是:enabled,一般来说...2015-11-24
- 这篇文章主要介绍了C#线程入门教程之单线程介绍,本文讲解了什么是进程、什么是线程、什么是多线程等内容,并给出了一个单线程代码示例,需要的朋友可以参考下...2020-06-25
- session和cookie是网站浏览中较为常见的两个概念,也是比较难以辨析的两个概念,但它们在点击流及基于用户浏览行为的网站分析中却相当关键。基于网上一些文章和资料的参阅,及作者个人的应用体会,对这两个概念做一个简单的阐述...2013-09-11
- Flex是Flexible Box的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。本教程我们来学习一下Flex布局的基本语法知识及运用实例。 网页布局(layout)是CSS的一...2016-09-14
- 这篇文章主要介绍了CocosCreator入门教程之用TS制作第一个游戏,对TypeScript感兴趣的同学,一定要看一下...2021-04-16
- 通过这篇文章帮助大家快速学习JavaScript DOM操作基础的相关知识,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧...2021-04-30
- 一聚教程网 从零开始的html教程(7),html表单的基础,零基础也能轻松学会html,希望大家喜欢 一、html的表单 表单负责网页中用户输入数据采集的功能,利用<form>标签来定...2016-12-31
- 这篇文章主要介绍了python局部变量和全局变量,实例分析了Python中返回一个返回值与多个返回值的方法,需要的朋友可以参考下...2021-10-22
- 这篇文章主要介绍了详解Servlet入门级设置(超详细 IDEA2020版),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-04
- 这里主要讲到关于在php教程类的调用,申请明,使用以前各种类的实例方法与操作过程,让你清楚的知道php类的construct destruct clone call wake sleep用法。 简单购物车...2016-11-25
- 今天小编在这里就来给Painter的这一款软件的使用者们来说下基础教程之图像水管,各位想知道的使用者们,那么下面就快来跟着小编一起看看吧。 给各位Painter软件的使...2016-09-14
- MySQL发展到今天,InnoDB引擎已经作为绝对的主力,除了像大数据量分析等比较特殊领域需求外,它适用于众多场景。然而,仍有不少开发者还在“执迷不悟”的使用MyISAM引擎,觉得对InnoDB无法把握好,还是MyISAM简单省事,还能支持快...2015-11-24
- 这篇文章主要介绍了阿里云ECS服务器入门使用流程(新手必看教程),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-07-13
- PHP大小写问题算是一个入门级的教程了,在此小编为php初学者介绍php开发中大小写的一些例子,希望可以帮助到各位。 今天写代码的时候发现自己代码的一处错误: $m_cate...2016-11-25
- 下面举一个很简单的?表达式的实现吧,其实它就是简单的if else哦。 <? $a = 5; //定义变数a=5 $b = 3; //定义变数b=5 $c = ($a==$b) ? ("yes") : ("no"); //如果...2016-11-25
- 这篇文章主要为大家介绍了python开发App基础操作API使用的示例过程有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪...2021-10-30