扩展库
(在使用时,需要修改extension_dir设置以指向用户放置扩展库的目录或者放置php_*.dll文件的位置,例如:extension_dir=C:\php\extensions)
(要在php.ini中启用某扩展库,需要去掉extension=php_*.dll前的注释符号,即将需要加载的扩展库前的分号删除)
字符串操作
字符串之间进行比较的操作应用如下:
使用stacmp()函数在用户登录系统中输入的用户名和密码是否正确,如果在验证用户名和密码时不使用此函数,那么输入的用户名和密码无论大写还是小写,只要正确登录即可,使用了strcmp函数就避免了这种情况,,即使正确,也必须大小写匹配才能登录,增加了网络登录的安全性.
正则表达式:正则表达式是区分大小写的
一个完整的正则表达式由两部分组成:元字符和文本字符(
元字符就是具有特殊含义的文本字符;
文本字符就是普通的文本)
行定位符 (^ 和 & ):行定位符就是用来描述字串的边界."^"表示行的开始;"&"表示行的结尾;
单词定界符( \b;\B): \bxx\b用来查找限定为xx的字符串,而\B\B则是完全与\b\b相反的意思;
字符类([ ]):如果要忽略大小写,可以使用"[ ]",只要匹配的字符出现在方括号里,但要注意,一个方括号只能匹配一个字符!
选择字符( | ):该字符可以理解为"或";
连字符( - ):连字符可以表示字符的范围;
排除字符( [^] ):例如[^a-zA-Z]:该表达式就是不以字母或下划线开头的变量名;
限定符( ?*+{ n , m } ):
限定符主要有六种: ? ->匹配字符的前面零次或一次
如:colou?r 该表达式可以匹配colour和color;
+ ->匹配前面的字符一次或多次 如:go+gle 该表达式可以匹配的范围是gogle到goo....gle;
* ->匹配前面的字符零次或多次 如:go*gle 该表达式可以匹配的范围是ggle到goo...gle;
{n}->匹配前面的字符n次 如:go{2}gle 该表达式只匹配google;
{n,}->匹配前面的字符至少n次 如:go{2,}gle 该表达式可以匹配的范围是google到goo...gle;
{n,m}->匹配前面的字符至少n次,最多m次 如:employee{0,2} 该表达式可以匹配的是employy;employe;employee;
点号字符( . ):" . "字符可以匹配出换行符以外的任意字符;
转义字符( \ ):
表单
Get方法:是将表单内容附加在url地址后面发送
Post方法:
是将表单中的信息作为一个数据块发送到服务器上进行处理,在浏览器的地址栏中不显示提交的信息
method属性
默认方法为
GET
方法
表单(form)由表单元素组成,常用的几种表单元素:
输入域标记<input>
<input type="">一共提供了10中类型的输入域
text-----------------添加一个文本框
password-----------添加一个密码域
file------------------添加一个文件域
注:上传文件时,需要指明表单的属性enctype="multipart/form-data"
image---------------添加一个图像域
注:这幅图片具有按钮的功能
radio----------------添加一组单选按钮
注:checked属性用来设置该单选按钮默认被选中
checkbox-----------添加一组复选框 注:checked属性用来设置该单选按钮默认被选中
submit--------------添加一个提交按钮 注:将表单的内容提交到服务器
reset-----------------添加一个重置按钮
button---------------添加一个普通按钮
注:一般配合javascript脚本进行表单处理
hidden---------------添加一个隐藏域 注:用于在表单中以隐含方式提交变量值,隐藏域在页面中对于用户是不可见的
添加隐藏域的目的在于通过隐藏的方式收集或者发送信息,浏览者单击"发
送"按钮发送表单时,隐藏的信息也一起发送到action指定的处理页
选择域标记<select>和<option>
列表方式:
菜单方式(select标记内有multiple属性):
文字域标记<textarea>
php参数传递的方法有三种:
$_POST[]------------------------------用于获取表单
区分表单元素大小写
<?php
$user=$POST["user"];
?>
?>
&_GET[]-------------------------------用于获取URL
区分表单元素大小写
<?php
$user=$GET["user"];
?>
?>
$_SESSION[]--------------------------用于获取Session变量的值
获取到的变量值保存之后,任何页面都可以使用 //很耗费x系统资源
<?php
$user=$SESSION["user"];
?>
?>
Web页中嵌入PHP脚本
在web页中插入php脚本的方法有两种:
1.直接在html标记中添加<?php ?>PHP标记符
2.对表单元素的value属性进行赋值
在PHP中获取表单数据
添加所有控件必须添加name属性,控件命名上尽量不要重复
PHP与JavaScript交互
javascript主要有四种基本类型:
字符串型:
数值型:
布尔型:
对象型:
Null值:
Undefined:
PHP 遍历数组
1.使用foreach()结构遍历数组:foreach结构并非操作数组本身,而是操作数组的一个备份
2.使用list()函数遍历数组:list()的函数只能用于数字索引的数组,且数字索引从0开始
说明:each()函数用于返回当前指针位置的数组值,并将指针推进一个位置,
PHP 字符串与数组的转换
1.使用exlpode()函数讲字符串转换成数组
explode函数讲字符串依指定的字符串或字符separator分开
语法格式 : array explode(string separator , string string , [int limit])
2.使用implode()函数将数组转换成一个新字符串
语法格式:string implode(string glue , array pieces) //参数glue是字符串类型,指要传入的分隔符;参数pieces是字符串类型,指传入的要合并元素的数组变量名称
PHP 统计数组元素个数
使用count()函数
语法格式: int count(mixed array [ , int mode ]
在统计二维数组时,如果直接使用count()函数只会显示到一维数组的个数,所以使用递归的方式来统计二维数组的个数
PHP 查询数组中指定元素
array_search()函数,在数组中搜索给定的值,找到后返回键名,否则返回false
语法格式:mixed array_search(mixed needle,array haystack [,bool strict])
array_search()函数最常见的应用是购物车,实现对购物车中的指定的商品数量的修改和删除
PHP isset和unset
isset--
检测变量是否设置
描述:
bool isset(mixed var [,mixed var [,...]])
如果var存在则返回TRUE,否则返回false.
如果已经使用unset()释放了一个变量之后,它将不再是isset().若使用isset()测试一个被设置成NULL的 变量,将返回FALSE.
同时要注意的是一个NULL字节("\0")并不等同于PHP的NULL常数.
警告:isset()只能用于变量,因为传递任何其他参数都将造成解析错误,若想检测常量是否已设值,可使用defined()函数.
更多说明:使用unset()释放变量后,它将不再是isset();
PHP函数isset()只能用于变量,传递任何其他参数都将造成解析错误;
检测常量是否已经设置可使用defined()函数
unset()--
销毁指定的变量.
注意在php3中,unset()将返回TRUE(实际上是整数型值1),而在php4中,unset()不再是一个真正的函数:他现在是一个语句.这样就没有了返回值,试图获取unset()的返回值将导致解析错误
PHP empty()和isset()区别
两者都是变量处理函数,都用来判断变量是否已经配置;
区别:empty还会检测变量是否为空,为零-------------------当一个变量值为0,empty()认为这个变量等同于空,即相当于没有设置
PHP传值和传引用的区别:
传 值: 是把实参的值赋值给形参,那么对形参的修改,是不会影响实参的值
传引用: 真正的以地址的方式传递参数以后,形参和实参都是同一个对象,只是他们的名字不同而已,对形参的修改 将影响实参的值
说 明:
传 值: 跟copy是一样的,就像我有一幢房子,我给你建筑材料,你建了一个跟我一样的房子,你在你的房子做什么事也不会影响到你,彼此独立
传引用: 跟c语言的指针差不多,打个比方.我有一幢房子,我给你一把钥匙,我们两个都可以进入这个房子,你在房子里做什么都会影响到我.
正则表达式验证电子邮件格式的正确性:
I.
$regex = '/^[a-z0-9!#$%&\'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&\'*+\/=?^_`{|}~-]+)*@(?:[-_a-z0-9][-_a-z0-9]*\.)*(?:[a-z0-9][-a-z0-9]{0,62})\.(?:(?:[a-z]{2}\.)?[a-z]{2,})$/i';
$str='test@test.com';
if(preg_match($regex,$str)
{
echo '电子邮件格式正确';
}
II.
function CheckMailAdr($str) //电子邮件验证函数
{
return(eregi(“^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3}$”,$str));
}PHP四种基础算法
$arr(1,43,54,62,21,66,32,78,36,76,39) 递增排序
冒泡排序法:
思路分析: 每次从数组当中冒一个最大的数出来
比如: 2,4,1 //第一次冒出的泡是4
2,1,4 //第二次冒出的泡是2
1,2,4 //结束
$arr(1,43,54,62,21,66,32,78,36,76,39);
$len=count($arr);
function BubbleSort($arr)
{
//设置一个空数组,用来接收冒出来的泡
//该层循环控制,需要冒泡的轮数
for($i=0;$i<$len;$i++)
{
//该层循环用来控制每轮 冒出一个数 需要比较的次数
for($k=0;$k<$len-$i;$k++)
{
if($arr[$k]>$arr[k+1])
{
$tmp=$arr[$k+1];
$arr[$k+1]=$arr[$k];
$arr[$k]=$tmp;
}
}
}
return $arr;
}
选择排序法:
思路分析: 每次选择一个相应的元素,然后将其放到指定的位置
function SelectSort($arr)
{
//实现思路 双重循环完成,外层控制轮数,当前的最小值. 内层控制的是比较次数
//$i当前的最小值位置,需要参与比较的元素
for($i=0,$i<$len-1;$i++)
{
//先假设最小值的位置
$p=$i;
//$j 当前都需要和哪些元素比较,$i后边的.
for($j=$i+1,$j<$len;$j++)
{
//$arr[$p]是当前已知的最小值
if($arr[$p]>$arr[$j])
{
//比较,发现更小的,记录下最小值得位置;并且在下次比较时,应该采用已知的最小值进行比较
$p=$j;
}
}
//已经确定了当前的最小值的位置,保存到$p中
//如果发现 最小值的位置与当前的假设位置$i不同,则位置互换即可
if($p!=$i)
{
$tmp=$arr[$p];
$arr[$p]=$arr[$i];
$arr[$i]=tmp;
}
}
//返回最终结果
return $arr;
}
插入排序法:
思路分析: 将要排序的元素插入到已经嘉定排序好的数组指定位置
function InsertSort($arr)
{
//区分 哪部分是已经排序好的
//哪部分是没有排序的
//找到其中一个需要排序的元素
//这个元素就是从第二个元素开始,到最后一个元素都是这个需要排序的元素
//利用循环控制就可以标识出来
//i循环控制 每次需要插入的元素,一旦需要插入的元素控制好了
//间接已经将数组分成了2部分,下标小于当前的(左边的),是排序好的序列
for($i=1;$i<$len;$i++)
{
//获得当前需要比较的元素值
$tmp=$arr[$i];
//内层循环控制 比较 并 插入
for($j=$i-1;$j>=0;$j--)
{
//$arr[$i];需要插入的元素;$arr[$j];需要比较的元素
if($tmp<$arr[$j])
{
//发现插入的元素要小,交换位置
//将后面的元素与前面的元素互换
$arr[$j+1]=$arr[$j];
//将前面的数设置为 当前需要交换的数
$arr[$i]=$tmp;
}
else
{
//如果碰到不需要移动的元素
//由于是已经排序好的数组,则前面的就不需要再次比较了
break;
}
}
}
//将这个元素 插入到已经排序好的序列内
//返回
return $arr;
}
快速排序法:
function QuickSort($arr)
{
//先判断是否需要继续执行
if($len<=1)
{
return $arr;
}
//如果没有返回,说明数组内的元素个数 多余1个,需要排序
//选择一个标尺
//选择第一个元素
$base_num=$arr[0];
//遍历 除了标尺外的所有元素,按照大小关系放入两个数组内
//初始化两个数组
$left_array=aray(); //小于标尺的
$right_array=array(); //大于标尺的
for($i=1;$i<$len;$i++)
{
if($base_num>$arr[i])
{
//放入左边数组
$left_array[]=$arr[$i];
}
else
{
//放入右边
$right_array[]=$arr[$i];
}
}
//再分别对左边和右边的数组进行相同的排序处理方式
//递归调用这个函数,并记录结果
$left_array=QuickSort(
$left_array);
$right_array=QuickSort(
$right_array);
//合并左边 标尺 右边
return array_merge(
$left_array,array);
}