PHP编程要点 | ||||||||||||||||
php简介: php:(Hypertext Preprocessor 超文本预处理器)是一种功能强大的服务器端的脚本语言发展:1994(php/F1)———>1996(php/F2)(可以访问数据库)———>1998(php/F3)———>2000(php/F4)———2004(php5) 所有的语句都是由表达式组成的php的几种写法 <1> <?php php语句 ?> <2> <? php语句 ?> <3> <script language="php"> php语句 </script> <4> <% php语句 %> zeed:代表php的内核 iis(internet信息服务):是微软的一个web服务器 php的两种开发环境: LAMP(linux apache mysql php):这四种的都是开源的。<环境一> WAMP(windows apache mysql php) <环境 二> tomcat是应用服务器 apache是web服务器 {}:叫符合语句 php是弱类型的语言,但是它区分大小写 ------------------ 变量: ------------------ 1.命名:变量名由字母、数字和下划线组成。 1):变量名区分大小写 2):变量名必须以$开头 3):不能以数字开头 4):不能是系统关键字 1): isset("name"):判断变量是否被初始化,返回值的类型是boolean; <?php $Hello; if(isset($Hello)){ echo "variable was set!"; }else { echo "variable is not set"; } ?> 这个程序的结果是variable is not set 2)define("name","value");定义常量 <? define("num",4); echo num; ?> 这个程序的结果是:4; 3): defined("name")判断常量是否被初始化,返回值类型是boolean; <? define("num",4); if(defined("num")){ echo "num was set value"; }else{ echo "num not is set value"; } ?> 这个程序的结果是:num was set value; 常量与变量的区别:常量名的前面不加$. boolean类型的返回值: 如果返回的值是真:输出的则是:true 、TRUE 1 '1' 这几种形式 如果返回值是假:输出的则是:false FALSE 0 null这几种形式 变量的数据类型: 1.布尔型 2.整形 3.浮点型 4.字符串行 5.数组 6.对象 7.空值 8.资源 var_dump(变量名) 返回值是变量的类型,长度和变量的值 gettype(变量名) 返回值是变量的类型 运算符: 算术运算符(+ - * /--结果永远是浮点数 %) 逻辑运算符(&&(and) ||(or) !(not) xor(异或)) 比较运算符(关系运算符)(> < == >= <= !=) 赋值运算符(= += -= *= /= %= .= ) 异或运算的规则:相同为零,不同为1; 字符串的连接运算符是:一个点. 优先级的排列:算术运算符>比较运算符>逻辑运算符>赋值运算符 /(除)在php中的应用: <? $num=102; $numtwo=$num/10; echo $numtwo; ?> 这个程序的结果是:10.2 %(求余数、求模)在php中的应用 <? $num=103; echo $num%10; ?> 这个程序的结果是:3 $$在php中的应用: <?php $hellow="php"; $i="hellow"; echo $$i; ?> 这个程序输出的结果是:php /这个符号在php中的用法与在c中的用法是不同的: 在php中得到的结果永远是浮点型 在c中如果符号前后的数都是int型,那么得到的结果也是int型的。只要符号前后的 数有一个是浮点型,结果就是浮点型。 === 判断类型和数值是不是都相等。 == 只是判断数值是不是相等 <? $str='100'; if($str==100) { echo "true"; }else{ echo "false"; } ?> 这个程序的结果:输出的是true; <? $str='100'; if($str===100) { echo "true"; }else{ echo "false"; } ?> <? $str=100.0; if($str===100) { echo "true"; }else{ echo "false"; } ?> 这个程序的结果:输出的是false,因为str的类型是double类型的; <? $str=100.0; if($str==100) { echo "true"; }else{ echo "false"; } ?> 这个程序的结果:输出的是true; /n在php中的使用 <? $str="100.0 100"; echo $str; ?> 这个程序的结果:输出的是100.0和100不在同一行上。 $a*=$b+3和$a=($a*$b)+3的结果是相同的 三元运算符:格式:表达式,表达式1:表达式2; <? $a=10; $b=9; $c=$a>$b?"a>b":"a<b"; echo $c; echo var_dump($c); ?> 这个程序的结果是:a>bstring(3)流程控制语句: 1.分支: 格式1:if语句 if(条件){ 语句集; } 格式2;if(条件){ 语句集1; }else{ 语句集2; } 格式3:if(条件1){ 语句集1; }else if(条件2){ 语句集2; }else{ 语句集3; } 格式3中的else可以去掉,结果正确,速度会变慢的。 多分支结构; switch语句 格式: switch(表达式){ case 常量:语句;break; case 常量2:语句;break; ...... default:语句;break; } 循环: while:条件为真时,执行循环体。 格式:while(条件){ 循环体; } 例题 <? $a=1; $sum=0; while($a<10){ $sum+=$a; $a++; } ?> 这个程序的结果是:55; for 格式: for(表达式1;表达式2;表达式3){ 循环体; } <? $mul=1; for($i=1;$i<=10;$i++){ $mul*=$i; } echo $mul; ?> 循环的控制语句 1.break:终止循环 2.continue:终止本次循环,进入下一次循环 continue; <? $mul=1; for($i=1;$i<=10;$i++){ if($i%2==0){ continue; mul*=$i; } } echo $mul; ?> break; <? $mul=1; for($i=1;$i<=10;$i++){ if($i==5){ break; mul*=$i; } } echo $mul; ?> <? $mul=1; for($i=1;$i<=10;$i++){ for($j=1;$j<10;$j++){ echo $j; break; } if($i==5){ break; mul*=$i; } } echo $mul; ?> 逻辑运算符的几种写法: <? echo 3>2&&4>3 ?> <? echo 3>2 and 4>3 ?> <? echo 3>2 || 4>3 ?> <? echo 3>2 or 4>3 ?> 位运算: <? echo 3&2 ?> 按位与;见零为零 按位或:见1为1 >>向右移位 <<向左移位 数组: 分类;枚举数组、关联数组、和多维数组 枚举数组:下标为整数的数组 下标是可以自己定义的,例如从5开始,而不是从0开始 关联数组:用字符串作为下标的数组。 为数组赋值用到的函数是:array 输出数组用到的函数是:print_r(数组名) 输出数组的格式: Array([name] => james[sex] => boy) 例如: $stu=array("james","jack","tom") 数组的下标从0开始的数组 $stu=array(2=>"james","jack","tom") 数组的下标从2开始的数组 <? $stu=array("james","jack","tom") print_r($stu); ?> 关联数组的赋值 $stu=array("name"=>"james","sex"=>"boy") 数组的名称加下标来引用数组; <? $stu=array("name"=>"james","sex"=>"boy"); echo $stu["name"]; echo "<p>".$stu["sex"]; ?> 删除数组元素:unset(); 1.删除整个数组:unset($arr) 2.删除单个数组元素 按照数组的字符下标删除数组 <? $stu=array("name"=>"james","sex"=>"boy"); print_r($stu); unset($stu["name"]); ?> <br> <? print_r($stu); ?> 按下标值删除数组的元素 <? $stu=array("james","jack","tom"); print_r($stu); unset($stu[1]); ?> <br> <? print_r($stu); ?> 便利整个数组用到的方法是:foreach(); 1.输出数组中的所有的值; foreach(数组名 as $value) <? $stu=array("james","jack","tom"); foreach($stu as $value){ echo $value."<br>"; } ?> 2.输出元素的下标和值; foreach(数组名 as $k=>$value){} <? $stu=array("james","jack","tom"); foreach($stu as $k=>$value){ echo "$stu[$k]=$value."<br>"; } ?> each():返回数组中的键值对 键有1,0,value,key四种形式,1和value对应的是数组的元素的值,0和key对应的是数组的元素的下标 例题1: <? $stu=array("james","jack","tom"); print_r(each($stu)); ?> 这个程序的结果是:Array([1] => james[value] => james[0] => 0[key] => 0) 例题2 <? $stu=array("james","jack","tom"); $arr=each($stu); echo '<br>value对应的值是:'.$arr["value"]; echo '<br>key对应的值是:'.$arr["key"]; echo '<br>1对应的值是:'.$arr["1"]; echo '<br>0对应的值是:'.$arr["0"]; ?> 这个程序的结果是: value对应的值是:james key对应的值是:0 1对应的值是:james 0对应的值是:0 例题3 <? $stu=array("james","jack","tom"); for($i=1;$i<=3;$i++){ $arr=each($stu); echo "<pr>"; print_r($arr); } ?> 这个程序的结果是: Array ( [1] => james [value] => james [0] => 0 [key] => 0 ) Array ( [1] => jack [value] => jack [0] => 1 [key] => 1 ) Array ( [1] => tom [value] => tom [0] => 2 [key] => 2 ) list的用法; list函数仅用于数组下标从0开始的数组。 <? $info=array('coffe','bprown','caffeine'); list($drink,$color,$power)=$info; echo "$drink is $color and $power makes it special. "; list($drink, ,$power)=$info; echo "$drink has $power. "; list(,, $power)=$info; echo "I need $power!" ?> next()将数组的指针移到下一个元素上 prev()将数组的指针移到上一个元素上 end()将数组的指针移到最后一个元素 current();数组当前光标所指的元素 range()自动生成一个包含指定范围的数组,有两个参数。 <? $arr=range(5,12); print_r($arr); ?> 这个程序的输出结果是: Array([0] => 5[1] => 6[2] => 7[3] => 8[4] => 9[5] => 10[6] => 11[7] => 12) <? $arr=range(1,100,10); print_r($arr); ?> 这个程序的结果是: Array([0] => 1[1] => 11[2] => 2[3] => 31[4] => 41[5] => 51[6] => 61[7] => 71[8] => 81[9] => 91) <? $arr=range('a','c'); print_r($arr); ?> 这个程序的输出结果是: Array([0] => a[1] => b[2] => c) count()统计数组中的元素的个数 例题<? $info=array('coffe','bprown','coffe'); echo (count($info)); ?> 这个程序的输出结果是:3 array_count_values()统计数组中相同元素的个数; 返回值是一个数组 例题 <? $info=array('coffe','bprown','coffe'); print_r(array_count_values($info)); ?> 这个程序的输出结果是: Array([coffe] => 2 [bprown] => 1) 多维数组: 定义:$arr=array(array("James","boy"),array("Jack","boy"),array("Tom")) array_keys()把数组的下标值以数组的格式返回 array_values()把数组中的元素的值以数组的格式返回 array echo list print都不是函数,是一个结构,利用一个结构实现一个功能。 输出一个变量的时候可以写成<?=$a;?>这个格式跟<?echo $a;?>具有相同的功能利用echo和print进行输出操作是可以加上括号,也可以不加括号函数: 定义:独立完成特定功能的代码块。 函数的分类: 1.内置函数:系统定义的函数 2.自定义函数:用户自己定义的函数。 print<<<start 代码 start; 例题: <?php print<<<start hello php world! class 0708javaA; start ?> 输出的内容是:hello php world! class 0708javaA 注意:1.start可以被替换成任意字母,只要前后匹配就行, 2.print<<<start 和start 一定要顶格写。 include():包含一个文件 例题:include("a.php"); include包含文件中的return语句的使用 one.php <? $b=include("a.php"); if($b=="ok") { echo "file is ok"; } ?> a.php文件 <?return “ok”?> 这个程序的输出结果是:file is ok include_once("b.php"); include(a.php); 如果b.php文件中包含了a.php文件,include(a.php)这一句将不再执行。 require():包含一个文件 例题:require("a.php"); <? $b=require("a.php"); if($b=="ok") { echo "file is ok"; } ?> a.php文件 <?return “ok”?> 这个程序的输出结果是:file is ok require_once("b.php"); require(a.php); 如果b.php文件中包含了a.php文件,require (a.php)这一句将不再执行。 Require和include的区别: 1. require语句必须放在程序的开头,include语句可以放在程序的任意位置 2. require包含的文件出现错误是,整个程序停止运行,include包含的文件出现错误时,回跳过这个错误,继续执行下面的程序。 声明一个函数: function fun_name( $args){ 函数体; }; 无参数的函数 例题: <? function noargs() { echo "这是一个无参数的函数"; } noargs(); ?> 有参数的函数: 例题: <?php function myfun($arg){ echo "这是${arg}语言的一个函数"; //注意:引用参数的时候要用{}扩 起来。 } myfun("php"); ?> 这个程序的结果是:这是php语言的一个函数 按值传递: 例题: <? $num=100; function fun($a){ echo '$a='.$a*=10; echo '<br>'; } fun($num); echo '$num='.$num; ?> 这个程序的结果是: $a=1000 $num=100; 按地址传递:注意取地址符号(&)的使用 <? $num=100; function fun($a){ echo '$a='.$a*=10; echo '<br>'; } fun(&$num); echo '$num='.$num; ?> 这个程序的结果是: $a=1000 $num=1000 默认传值: 注意:尽量不要将默认值参数定义在第一个参数位置,容易造成 <? function myfun($a1,$a2){ echo '$a='.$a*=10; echo '<br>'; } myfun(100,8); ?> 这个程序的结果是: 10000 800 带有return的函数 <?php function myfun($arg1){ $arg1*=8; return $arg1; } echo myfun(10); ?> 这个程序的结果是:80 函数自身调用 <?php function myfun($arg){ if($arg==0) return 1; return $arg*myfun($arg-1); } echo myfun(4); ?> 这个程序的结果是:24 变量函数:如果一个变量名后有括号,PHP则搜索与变量值相同的函数。并且执行它无参变量函数: <?php function f(){ echo "hello php!"; } $temp="f"; $temp(); ?> 这个程序的结果是:hello php; 带参变量函数: <?php function f($arg){ return $arg*10; } $temp="f"; echo $temp(10); ?> 这个程序的结果:100; 变量的作用域: global语句: <?php $a=100; echo $a.'<br>'; function write(){ global $a; $a=20; } write(); echo $a; ?> 这个程序的结果是: 100 20 <?php $a=100; echo $a.'<br>'; function write(){ $a=20; } write(); echo $a; ?> 这个程序的结果是: 100 100 static 语句:静态变量 <? function sum(){ static $a=0; echo $a.' '; $a++; } sum(); sum(); sum(); ?> 这个程序的结果是:0 1 2 <? function sum(){ $a=0; echo $a; $a++; } sum(); sum(); sum(); ?> 这个程序的结果是:0 0 0 获取时间和日期 a - "am" 或是 "pm" A - "AM" 或是 "PM" d - 几日,二位数字,若不足二位则前面补零; 如: "01" 至 "31" D - 星期几,三个英文字母; 如: "Fri" F - 月份,英文全名; 如: "January" h - 12 小时制的小时; 如: "01" 至 "12" H - 24 小时制的小时; 如: "00" 至 "23" g - 12 小时制的小时,不足二位不补零; 如: "1" 至 12" G - 24 小时制的小时,不足二位不补零; 如: "0" 至 "23" i - 分钟; 如: "00" 至 "59" j - 几日,二位数字,若不足二位不补零; 如: "1" 至 "31" l - 星期几,英文全名; 如: "Friday" m - 月份,二位数字,若不足二位则在前面补零; 如: "01" 至 "12" n - 月份,二位数字,若不足二位则不补零; 如: "1" 至 "12" M - 月份,三个英文字母; 如: "Jan" s - 秒; 如: "00" 至 "59" S - 字尾加英文序数,二个英文字母; 如: "th","nd" t - 指定月份的天数; 如: "28" 至 "31" U - 总秒数 w - 数字型的星期几,如: "0" (星期日) 至 "6" (星期六) Y - 年,四位数字; 如: "1999" y - 年,二位数字; 如: "99" z - 一年中的第几天; 如: "0" 至 "365" 字符串: 1. 格式化字符: 1):trim():去除两端的空格。 例题: <? $str=' wo shi guo dan dan '; echo trim($str); ?> 这个程序的结果是:|wo shi guo dan dan| 2): ltrim():去除左端的空格。 例题: <? $str=' wo shi guo dan dan '; echo ltrim($str); ?> 这个程序的结果是:|wo shi guo dan dan | 3): rtrim():去除右端的空格。 例题: <? $str=' wo shi guo dan dan '; echo ltrim($str); ?> 这个程序的结果是:| wo shi guo dan dan| 4): strtoupper();把字符串中的小些部分全部转换成大写 例题: <? $str=?wo shi guo dan dan'; echo strtoupper($str); ?> 这个程序的结果是:WO SHI GUO DAN DAN 5): strtolower();把字符串中的大写部分全部转换成小写; 例题: <? $str=?WO SHI GUO DAN DAN'; echo strtolower($str); ?> 这个程序的结果是:wo shi guo dan dan 6) ucfirst();把字符串的第一个字母转换成大写。 Ucfirst中的u:upper c:convert 例题: <? $str='wo shi guo dan dan'; echo ucword($str); ?> 这个程序的结果是:Wo shi guo dan dan 7): ucwords() 将每个单词的首字母转换为大写 例题: <? $str='wo shi guo dan dan'; echo ucword($str); ?> 这个程序的结果:Wo Shi Guo Dan Dan 8): nl2br():把字符串中的 转换成<br>标签。 参数就是要处理的字符串 例题: <? $str="i love php, and you? "; $str=nl2br($str); echo $str; ?> 这个程序的结果是: i love php,<br /> and you? 9): htmlspecialchars(str,quote_style); str:要转换的字符 quote_style:转换方式,主要对单引号和双引号进行转换。值如下: ENT_COMPAT 双引号被转换 ENT_QUOTES 单引号和双引号都被转换 ENT_NOQUOTES 任何一个引号都不被转换 输出的结果是字符串的内容,如果不用htmlspcialchars()这个函数处理。输 出的结果是:带有下划线的link。 特殊符号的介绍: <:< >:< ':输出的是单引号 例题: <? $str="<a href='www.baidu.com'>link</a>"; $str=htmlspecialchars($str); echo $str; ?> 这个程序输出的结果是:"<a href='www.baidu.com'>link</a> 10): strip_tags():去除字符串中的php和html代码。 第一个参数是要处理的字符串: 第二个参数是要留下的标签。 例题1: <? $str="<font color=read><a href='www.baidu.com'>link</a></font>"; $str=strip_tags($str); //只有一个参数的情况 echo $str; ?> 这个程序的结果是:不是超链接的“link” 例题2: <? $str="<font color=read><a href='www.baidu.com'>link</a></font>"; $strip_tags($str,"<font><a>"); //有两个参数的写法 echo $str; ?> 这个程序的结果是:带有超链接的“link“并且字体是红色的 11): addslashes():按照一定的规则将字符串进行转义。 magic_quotes_gpc = On 自动对 get post cookie的内容进行转义 get_magic_quotes_gpc()检测是否打开magic_quotes_gpc 例题: <? $str="hello 'jack'"; $str=addslashes($str); echo $str; ?> 这个程序的结果是:hello,?jack? 12): stripslashes();去除字符串中的反斜杠 参数是要处理的字符串。 例题: <? $str="hello 'jack'"; $str=stripcslashes($str); echo $str; ?> 这个程序的结果是:hello „jack? 13): Explode():分割字符串。 第一个参数是分割号 第二个参数是分割的字符串。 第三个参数表示要分成几部分。 这个函数的返回值类型是数组; 例题: <? $str="jack;john;tom"; $str=explode(";",$str); print_r($str); ?> 这个程序的结果是:Array( [0] => jack [1] => john [2] => tom) 14): implode():连接字符串。。 第一个参数是:连接用到的符号 第二个参数是要连接的数组。 例题: <? $str=array('guo','dan','dan'); $str=implode('-',$str); echo $str; ?> 这个程序的结果是:guo-dan-dan 15): Strtok();从指定字符串中去除指定字符。 第一个参数是:要处理的字符串 第二个参数是:要从字符串中去除的字符 例题: <? $str='wo;shi;gdd'; $newstr=strtok($str,';'); while ($newstr){ echo $newstr; $newstr=strtok(';'); } ?> 这个程序的结果是: WoShiGdd 16): Substr()在指定的字符串中取出规定的字符串 第一个参数:要处理的字符串 第二个参数:提取子字符串开始的位置。(按照索引) 第三个参数:提取的子字符串的长度。(这个参数可以不存在) <? $str='wo;shi;gdd'; $newstr=substr($str,'2','4'); echo $newstr; ?> 这个程序输出的结果是:;sh 17): strcmp(); 字符串的比较;(比较的时候区分大小写) 两个参数都是字符串。 比较的规则:从左向右按照字母的ASCII进行比较。 例题: <? $str1="abc"; $str2="abcd"; echo strcmp($str1,$str2); ?> 这个程序的结果是:-1 第一个字符串比第二个字符串大的时候返回的是1; 第一个字符串比第二个字符串小的时候返回的是-1; 两个字符串相等的时候返回的是0; 18): strcasecmp():字符串的比较(不区分大小写) 两个参数都是字符串。 比较的规则:从左向右按照字母的ASCII进行比较。 例题: <? $str1="abc"; $str2="ABC"; echo strcasecmp($str1,$str2); ?> 这个程序的结果是:0; 第一个字符串比第二个字符串大的时候返回的是1; 第一个字符串比第二个字符串小的时候返回的是-1; 两个字符串相等的时候返回的是0;】 19): strnatcmp();按自然顺序比较字符串的大小; 两个参数都是字符串。 比较的规则:先比较字符串的长度长度长的字符串大,如果长度相等,从 左到右逐位按照ASCCII码进行比较。 例题: <? $str1="abc"; $str2=”abcd”; echo strcmp($str1,$str2); ?> 这个程序的结果是:-1; 第一个字符串比第二个字符串大的时候返回的是1; 第一个字符串比第二个字符串小的时候返回的是-1; 两个字符串相等的时候返回的是0;】 20): Strnatcasecmp():用法和strnatcmp相同,只是不区分大小写。 两个参数都是字符串。 比较的规则:先比较字符串的长度长度长的字符串大,如果长度相等,从左到右逐位按照ASCCII码进行比较。 例题: <? $str1="abc"; $str2=”ABC”; echo strcmp($str1,$str2); ?> 这个程序的结果是:0; 第一个字符串比第二个字符串大的时候返回的是1; 第一个字符串比第二个字符串小的时候返回的是-1; 两个字符串相等的时候返回的是0;】 21): strstr();在指定的字符串中查找字符串。 第一个参数:从这个字符串中查询。 第二个参数:要找的字符串。 例题: <? $str1="abcefg@habcdefgh"; $str2="ab"; echo strstr($str1,$str2); ?> 这个程序的结果是:abcefg@habcdefgh 查询的规则:从左向右的顺序:输出第一次出现要找的字符的位置右边的所 有的字符并且包含要找的字符。字符串中没有要查找的字符,返回null。 22): stristr();和strstr的功能相同,只是不区分大小写。 第一个参数:从这个字符串中查询。 第二个参数:要找的字符串 例题: <? $str1="abcefg@habcdefgh"; $str2="F"; echo stristr($str1,$str2).'<br>'; ?> 这个程序输出的结果是:fg@habcdefgh 查询的规则:从左向右的顺序:输出第一次出现要找的字符的位置右边的所 有的字符并且包含要找的字符。字符串中没有要查找的字符,返回null。 23): strrchr();从最后一次搜索到的字符处返回 第一个参数:从这个字符串中查询。 第二个参数:要找的字符串 例题: <? $path = "c:aaaa.html"; $filename = strrchr($path,""); echo $filename; ?> 这个程序的输出结果是:a.html; 24): strpos():在指定的字符串中查找子字符串第一次出现的位置,找不到返回 fase; 第一个参数:在这个字符串中查找。 第二个参数:要查找的子字符串。 第三个参数:定义查证范围的开始位置。 例题: <? $path = "abcdeabcdeabcde"; $filename = strpos($path,"b",4); echo $filename; ?> 这个程序的输出结果是:6; 25): strrpos():功能和strpos相同,定义范围的时候,是子字符串最后一次出 现的位置。 第一个参数:在这个字符串中查找。 第二个参数:要查找的子字符串。 第三个参数:定义查证范围的开始位置。 例题: <? $path = "abcdeabcdeabcde"; $filename = strrpos($path,"b",4); echo $filename; ?> 这个程序的查询结果是:11; 26): str_replace():用新的字符串替换指定目标字符串中的子字符串。 第一个参数:子字符串: 第二个参数:新字符串。 第三个参数:目标字符串. 例题: <? $path = "abcdeabcdeabcde"; $filename =str_replace('ab','woshi',$path); echo $filename; ?> 这个程序的是输出结果是:woshicdewoshicdewoshicde。 27): substr_replace(); 第一个参数:原始字符串 第二个参数:新字符串 第三个参数:替换的开始位置 第四个参数:要替换的字符串的长度。(可以存在,也可以不存在) <? $str="hello php!"; $newstr=substr_replace($str,'hi',0,5); echo $newstr; ?> 这个程序的结果是:hi php! 28):strlen();求字符串的长度。 参数是要求长度的字符串的。 例题: <? $str="wohshigdd"; echo strlen($str); ?> 这个程序的结果是:9 表单: 1. 表单的三种提交方式: 1).get方式:功能:获取get方式提交的数据 格式:$_GET[“formelement”] 2):post方式:功能:获取post方式提交的数据 格式:$_POST[“formelement”] 3):request方式:功能:获取任意方式提交的数据 格式:$_REQUEST[“formelement”] 2. 文件上传: $_FILES[“filename”] :返回的值的类型是文件对象 1):$_FILES[“filename”][“name”]:返回上传文件的文件名 2): $_FILES[“filename”][“type”]:返回上传文件的类型 3): $_FILES[“filename”][“size”]:返回上传文件的大小 4): $_FILES[“filename”][“tmp_name”]:返回上传文件的临时文件名 5): $_FILES[“filename”][“error”]:返回上传文件相关的错误代码 Error属性的返回值的几种情况: 0:没有上传错误,上传成功 1.:上传文件超过了php.ini文件中upload_max_filesize选项限制的 值 2.:上传文件超过了HTML表单中MAX_FILE_SIZE选项限制的值 3.:文件只有部分被上传 4.:没有文件被上传 例题: html文件: <html> <form action="uploadfile.php" enctype="multipart/form-data" method="POST"> <input type="file" name="uploadfile" > <input type="submit" value="上传"> </form> </html> Uploadfile.php文件 <? $uploaddir="./uploads/"; //$uploadfile=$uploaddir.$_FILES["uploadfile"]["name"]; $uploadfile=date("Yhsm").strrchr($uploaddir.$_FILES["uploadf ile"]["name"],"."); if(move_uploaded_file($_FILES["uploadfile"]["tmp_name"],$upl oadfile)){ print "上传成功".'<br>'; }else { print "上传失败".'<br>'; } echo "上传的文件类型".$_FILES['uploadfile']["type"].'<br>'; echo "上传的文件名".$_FILES['uploadfile']["name"].'<br>'; echo "上传的文件大小".$_FILES['uploadfile']["size"].'<br>'; ?> 文件上传的几个相关属性: 1):file_uploads=on:是否允许通过http上传文件的开关 2):upload_tmp_dir=”${path} mp:存放临时文件。” 3):upload_max_file=8M: 允许上传的最大文件的大小 4):post_max_size=10M: 控制在采用POST方法进行一次表单提交中PHP所能 够接收的最大数据量。 5):max_input_time = 60(秒):以秒为单位对通过POST、GET以及PUT方式 接收数据时间进行限制。如果应用程序所运行环境处在低速链路上,则需 要增加此值以适应接收数据所需的更多时间 6):memory_limit = 8M :为了避免正在运行的脚本大量使用系统可用内 存,PHP允许定义内存使用限额。通过memory_limit变量来指定单个脚本 程序可以使用的最大内存容量变量memory_limit的值应当适当大于 post_max_size的值 url编码相关的几个属性: 1):urlencode(): 功能:对url进行编码。对所有非字母、数字字符转换成%后跟16进制 数,空格用+表示。 例题: <? $url="教程 wdl=aaa"; $encodeurl= urlencode($url); //编码函数 echo $encodeurl.'<br>'; ?> 这个程序的结果: http%3A%2F%2Fwww.baidu.com%2Fs%3Fwd%3DPHP%BD%CC%B3%CC+wdl%3D aaa 2):urldecode() 功能:对上面函数转换后的编码进行解码 <? $url="教程 wdl=aaa"; $encodeurl= urlencode($url); //编码函数 echo urldecode($encodeurl); //解码解码函数 ?> 这个程序的结果是:教程 wdl=aaa Session的用法: session是存放在服务器端的一个变量,session 是通过sessionid区 分的。 $_SESSION[“session_name”] 在多个页面之间传递值 格式:$_SESSION[“filename”] = “PHP.file” 注意:开启php.ini中选项 session.auto_start = 1 :表示有请求时就自动启动 session_start()事件 例题: sessionForm.php文件: <form action="session.php" method="POST"> username:<input type="text" name="user"><br> password:<input type="password" name="password"><br> <input type="submit"> </form> session.php文件: <? $_SESSION["user"]=$_POST["user"]; //设置session变量。 $_SESSION["password"]=$_POST["password"]; ?> <a href="showsession.php">显示</a> showsession.php文件: <? echo 'username:'.$_SESSION["user"].'<br>'; echo 'password:'.$_SESSION["password"].'<br>'; ?> 数据库的连接: 1. 服务器的连接函数:mysql_connection(); 第一个参数是:服务器 第二个参数是:用户名 第三个参数是:密码 2. 选择数据库的函数:mysql_select_db(); 第一个参数是:数据库名。 第二个参数是:服务器 这个函数的返回值是boolean类型。 3. 创建查询的函数是:mysql_query();参数是sql语句; 返回值:资源标识、true和false三种 4. 操作查询:mysql_fetch_row():参数是查询的结果 例题: <? $conn=mysql_connect("localhost","root",""); //服务器的链接 if(mysql_select_db("gdd",$conn)){ //判断数据库连接是否成 功 echo "连接成功~"; }else{ echo "连接失败~"; } $sql="select * from user"; $result=mysql_query($sql,$conn); //执行sql语句 echo "<table border=1>"; $f=mysql_fetch_field($result); echo "<tr>"; foreach ($arr as $v){ echo "<td>".$v."</td>"; } echo "</tr>"; while($arr=mysql_fetch_row($result)){ echo "<tr>"; foreach ($arr as $v) { echo "<td>".$v.'</td>'; } echo "</tr>"; } ?> </table> 5): mysql_fetch_array($result):从查询语句返回的结果集中取得一行作 为关联数组或数 字数组,或二者都有 例题: <? //exit也可以用die代替。 $conn=mysql_connect("localhost","root","") or exit("连接数据库失败~"); mysql_select_db("gdd"); $str="select * from user"; $result=mysql_query($str); echo "<table border=1>"; while($arr=mysql_fetch_array($result)){ echo "<tr>"; for($i=0;$i<count($arr)/2;$i++){ echo "<td>$arr[$i] </td>"; } echo "<tr>"; } echo "</table>"; ?> 6):数据库中字符集的设置方法: 1). mysql_set_charset("gbk",$conn);设置字符集为gbk字符集。如果 不写$conn,指的是设置的当前资源的字符集 2).mysql_query("set names gbk",$conn); 通过执行sql语句,设置 字符集为gbk字符集。如果不写$conn,指的是设置的当前资源的字符 集 7): mysql_num_rows($result):获取查询结果中的记录数。 例题: <? $conn=mysql_connect("localhost","root","") or exit("连接数 据库失败~"); mysql_select_db("gdd"); $str="select * from user"; $result=mysql_query($str); echo "共有".mysql_num_rows($result)."条记录<p>"; ?> 8):mysql_error():本函数可以得到 MySQL数据库服务器的错误信息。 例题: <? $conn=@mysql_connect("localhost","root",""); mysql_select_db("userf"); echo mysql_error($conn); ?> 9):setcookie(string name, string value, int expire, string path, string domain, int secure); 创建cookie ,本函式的参数除了 第一个 name 之外,都可以省略。 文件操作: file_exists(path):判断文件是否存在: path:文件的路径,可以是绝对路径,也可以是相对路径。 例题: <? if(file_exists("cookie.php")){ echo "文件存在"; }else{ echo "文件不存在"; } ?> Fopen(filename,method):打开文件. Filename:文件的名字 Method:打开的方式 Method的几种; r:只读的方式打开文件 r+:读写的方式打开文件。 w:只写方式打开文件。文件不存在创建文件。 w+:读写方式打开文件。文件不存在时创建文件。 a: 写方式打开文件,指针指向文件尾,表示可以在文件中追加数据,若文件不存在 则创建该文件 a+:读写方式打开文件指针指向文件尾,表示可以在文件中追加数据,若文件不存在 则创建该文件 b:以二进制方式打开文件 <? fopen("hello.txt","r"); //fopen("hello.txt","r+"); //fopen("hello.txt","w"); //fopen("hello.txt","w+"); //fopen("hello.txt","a"); //fopen("hello.txt","a+"); //fopen("hello.txt","b"); echo "文件被打开了"; ?> fwrite(resource,string);在打开的文件中添加指定的内容。 Resource:打开的数据文件。 String:要添加的内容。 <? $fp=fopen("hello.txt","w+"); for($i=0;$i<=10;$i++){ fwrite($fp,$i); } echo "文件被写好了"; ?> Fclose(name);关闭打开的文件。 例题: <? $open=fopen("hello.txt","w+"); fclose($open); echo "操作成功~"; ?> Fgets(resouce);读取一行的数据 Resource:打开的文件。 例题: <? $open=fopen("hello.txt","r"); $fget=fgets($open,1024); echo $fget; ?> Readfile(path):读取整个文件。 Path:文件的路径,可以是绝对路径,也可以是相对路径。 函数的返回值是:文件的内容和文件内容的字节数 例题: <? echo readfile("hello.txt"); ?> Filsesize(path):取文件大小 Path:文件的路径,可以是绝对路径也可以是相对路径。 函数的返回值是:文件的内容的字节数。 例题: <? echo filesize("d:d.txt"); ?> Unlink(path);删除文件。 Path:文件的路径,可以是绝对的也可以是相对的。 函数的返回值类型是布尔类型的。 <? if(file_exists("hello.txt")){ if(unlink("hello.txt")) { echo "删除成功~"; }else{ echo "删除失败~"; } }else{ echo "文件不存在~"; } ?> mkdir(name);创建目录 name:目录的名称。 函数的返回值是布尔类型的。 例题: <? mkdir("www"); ?> Rmdir(name);删除目录 Name:删除目录。 函数的返回值类型是布尔类型。 <? if(rmdir("www")){ echo "删除成功~"; }else{ echo "删除失败~"; } ?> basename(path);取得文件名。 Path:文件的路径。这个参数只是一个字符串。不一定是存在的文件的路径。 函数的返回值类型是文件的名字(带有扩展名) 例题: <? echo basename("c:wwwhello.txt"); ?> pathinfo(path):获取路径文件信息。 Path:文件的路径。这个参数只是一个字符串。不一定是存在的文件的路径。 函数的返回值类型是:数组。数组的下标分别是:1.dirname:路径 2.basename:文件的全名 3.文件的扩展名:extension. 4.文件的名是:filename 例题: <? $fileinfo=pathinfo("c:wwwhello.txt"); print_r($fileinfo); exit(); echo "<br>路径是:".$fileinfo['dirname'].'<br>'; echo "文件全名是:".$fileinfo['basename'].'<br>'; echo "扩展名是:".$fileinfo['extension'].'<br>'; echo "文件名是:".$fileinfo['filename'].'<br>'; ?> Realpath(name);获取绝对路径 Name:文件的名字(实实在在存在的文件) 函数的返回值类型是:字符串类型的文件的绝对路径 例题: <? echo realpath("hello.txt"); ?> Copy(path1,path2):复制文件。 Path1:被复制的文件的路径,可以是绝对的也可以是相对 Path2:要复制的文件的路径,可以是绝对路径也可以是相对路径 例题: <? if(copy("hello.txt","d:a.txt")){ echo "复制成功~"; }else{ echo "复制失败~"; } ?> Is_dir(path);判断是不是目录。 Path:目录的路径,可以是绝对的,也可以是相对的。 函数的返回值是布尔类型的。 例题: <? if(is_dir("uploads")){ echo "这是一个文件夹"; }else{ echo "这不是一个文件夹"; } ?> Opendir(path):打开目录。 Path:目录的路径,可以是绝对的,也可以是相对的。 函数的返回值是布尔类型的。 例题: <? if(opendir("d:game")){ echo "文件夹被打开了"; }else{ echo "文件夹没有别打开"; } ?> Readdir(resouse):读取目录。 resouse:被打开的目录。 函数的返回值类型是布尔类型的。 <? $opendir=opendir("d:game"); if(readdir($opendir)){ echo "目录被读取"; }else{ echo "目录没有被读取~"; } ?> Closedir(resouse);关闭目录 Resouse:被打开的目录 没有返回值 例题: <? $opendir=opendir("d:game"); echo "目录被打开了"; closedir($opendir); echo "目录被关闭了"; ?> 正则表达式: 是一种可以永远模式匹配和替换的强有力的工具。 ^http:表示匹配以http开头的所有字符 [a-z]匹配所有小写字符 abc 匹配字符串abc。 模式: 是正规表达式最基本的元素,它们是一组描述字符串特征的字符。 正则表达式匹配时用到的一个函数。 preg_match(match,str):进行匹配的函数 match:正则表达式的规则; str:要验证的字符串。 例题:(ip地址的验证) <? $str="172.18.88.114"; if(preg_match("/^(d{1,3}.){3}d{1,3}/",$str)){ echo "成功~"; }else{ echo "失败"; } ?> 符号 意义 ^ 表示匹配的字符必须在最前端 $ 表示匹配的字符必须在最后端 * 匹配*前面的字符0次或多次 + 匹配+前面的字符1次或多次 ? 匹配,前面的字符0次或1次 . 匹配除换行符外的所有单个的字符 (x) 匹配„x?并记录匹配的值 | 匹配|前面或者后面的字符 {n} 匹配前面的字符n次 {n,} 匹配前面的字符至少n次 {n,m} 匹配前面的字符n 到m次。 [] 匹配列出的字符串中的任意一个字符 [^] 不匹配列出的字符串中的任意一个字符 空格 匹配一个空格 预定义字符和字符类 字符 意义 d数字 表示匹配数字0-9中任一字符,功能类似[0-9] D非数字 表示匹配一个非数字,功能类似[^0-9] w字符 表示匹配一个单词字符.功能类似[a-zA-Z0-9] W非字符 表示匹配一个非单词字符 匹配一个单词的分界线,比如一个空格 图像: 函数: Imagecreate(width,height):创建画布: Width:画布的宽度。 Height:画布的高度。 Imagecolorallocate(resouse,R,G,B):定义颜色 Resouse: 画布的变量。 R:red颜色的值。 G:green颜色的值。 B:blue颜色的值。 Imageline(resouse,startx,starty,endx,endy,color):画一条直线 Resouse:画布 Stratx:直线开始的横坐标。 Starty:直线开始的纵坐标. Endx: 直线结束的横坐标。 Endy:直线结束的纵坐标。 Color:直线的颜色。 Imagearc(resouse,centerx,centery,width,height,start,end,color)画一条弧 线。 Resouse;画布。 Centerx:圆心的x坐标。 Centery:圆心的y坐标。 Width:画成的图像的宽度。 Height:画成的图像的高度。 Start:弧线开始的度数 End:弧线结束的度数。 Imagestring(resouse,size,x,y,str,color):画一个字符串。 Resouse:画布。 Size:字符串的字体的大小 X:开始写字符串的横坐标 Y:开始写字符串的纵坐标。 Str:要画的字符串。 Color:字符串的颜色。 例题: <?php header("Content-type:image/gif"); //发送的是http的头的内容 $im=imagecreate(400,300); //创建画布 $black=imagecolorallocate($im,0,0,0); //定义颜色。四个参数分别是画布,rgb的值 $red=imagecolorallocate($im,255,0,0); //定义一个红色 $yellow=imagecolorallocate($im,255,255,128); imageline($im,1,1,350,25,$yellow); //六个参数分别是:画布,线开始的横坐标,线开始的横坐标线开始的横坐标 imagearc($im,200,15,20,20,35,190,$red); //六个整形的参数分别是圆心的 imagestring($im,5,150,150,"Graph TEST!",$red); //三个整形的参数分别是字号和位置 imagestring($im,10,150,180,"wo shi gdd!",$red); //三个整形的参数分别是字号和位置 imagegif($im); imagedestroy($im); ?> array_unshift() //在数组的头部添加元素,也就是把一个新的元素插入到数组,相应索引还自动改变 array_push() //在数组尾部添加元素 array_shift() //在数组头部删除元素 array_pop() //在数组尾部删除元素
|