PHP知识点复习
一、PHP介绍
<strong><span>PHP</span></strong>
为服务器端技术,由Web服务器解释执行,html+css+js
为前端技术,由浏览器解释执行。
1. PHP运行环境搭建
操作系统(Windows、Linux)
Web服务器 Apache(开源,最流行)
数据库系统 MySQL(开源,适合中小规模)
PHP解析模块
2. 环境设置
Apache常用配置
打开http.conf
(wamp安装目录下/conf/)文件。
- 端口修改:
Listen 0.0.0.0:8080 Listen [::0]:8080
- 服务器访问名称:
ServerName localhost:8080
- 主目录修改:
DocumentRoot "d:/wamp/www/"
PHP运行环境查看:
<?php phpinfo();?>
二、PHP代码的编写及执行方法
1. PHP代码的编写
PHP编码的方式为在html中嵌入php代码的方式来编写,其中php代码放在 <?php ... ?>
定界符中。
示例:以 <span>h1</span>
标题的形式输出当前日期:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>第一个php程序</title> </head> <body> <h1><?php echo date(‘Y-m-d‘);?></h1> 或<?php echo ‘<h1>‘.date(‘Y-m-d‘).‘</h1>‘?> </body> </html>
2. PHP代码的保存
将该文件命名为 first.php(拓展名必须为php), 放入Wamp的主目录(默认为wamp安装目录下的www文件夹)。
3. PHP文件的执行
打开浏览器输入<span><strong> http://localhost:8080/first.php </strong></span>向Web服务器提出请求,Web服务器发现这是一个php文件,打开该文件执行其中的php代码,将执行结果发送给客户端浏览器,由浏览器渲染呈现个访问者。
三、PHP语法
php为类C语言,语言和C语言类型,所有这里只是列出php比较独特的部分。
1.php变量
- 变量使用前不需要声明,php 变量必须以 $ 开头。
- php 为弱类型语言,变量的类型在运行时赋值决定。
- 区分大小写,但内置结构和关键字以及用户自定义的类名和函数名都是不区分大小写的。如:echo,while,function 等。
- 未初始化的变量,值为 null。
<?php $num=1; $bol=true; $s=‘字符串‘; ?>
2. 变量的作用域
- local(局部):函数内部声明的变量拥有 LOCAL 作用域,只能在函数内部进行访问。
- global(全局):函数之外声明的变量拥有 Global 作用域,只能在函数以外进行访问。
- static(静态)
global 的作用是指明全局变量,使其可在函数内部使用。
<?php $a=1; function fun(){ echo $a; } //没有输出 ?>
<?php $a=1; function fun(){ global $a; echo $a; } //输出:1 ?>
使用 $GLOBALS[] 全局数组也能实现在函数内部引用变量。
<?php $a=1; function fun(){ echo $GLOBALS[‘a‘]; } //输出:1 ?>
3. php输出
echo,print_r,var_dump
<?php $x=100; $arr=array(‘北京‘,‘上海‘,‘广州‘); echo $x; print_r($x); var_dump($x); echo $arr; print_r($arr); var_dump($arr); ?>
4. 运算符
连接运算符: .
比较运算符: == 、 ===
5.php的字符串
单引号 表示纯粹的字符串。
双引号 中包含的变量名会替换成相应的值。
1)操作方法:
strlen($str)
:获取字符串的长度。
如果计算中文字符串的长度使用 mb_strlen 函数,
mb_strlen (字符串,编码类型)
mb_strlen ( ‘ web设计 ‘ , ‘ utf-8 ‘);
注意的是,注意的是,mb_strlen
并不是PHP核心函数,需要在php.ini中确保 "extension=php_mbstring.dll
" 这一行存在并且没有被注释掉。
$str[index]
:获得字符串中的单个字符。<?php $email=‘‘; for ($i=0; $i <strlen($email) ; $i++) { echo $email[$i]; } ?>
trim($str)
:去掉字符串两端的空格。
<strong><span>ltrim($str)</span></strong>
、rtrim($str)
:去掉字符串左边或右边的空格。
substr($str, start, [length])
:第start
个字符开始,取长为length
的子串。如果省略length
,表示取到字符串的结尾。<?php substr("2010-9-6",5);//返回"9-6" substr("2010-9-6",2,4);//返回"10-9" ?>
-
strpos(string,find,[start])
:返回子串find
在字符串string
中第一次出现的位置,如果未找到该子串,则返回false
,如果有start
参数,表示开始搜索的位置。<?php strpos("ABCabc","bc");//返回4 strpos("ABCabc","bc",5);//返回false ?>
<strong><span>strrpos()</span></strong>
- 查找字符串在另一字符串中最后一次出现的位置(区分大小写)。
<span><strong><span>stripos()</span></strong></span>
- 查找字符串在另一字符串中第一次出现的位置(不区分大小写)。
<strong><span>strripos()</span></strong>
- 查找字符串在另一字符串中最后一次出现的位置(不区分大小写)。
str_replace(find, replace, string, [&count])
:替换字符串中的部分字符,将find
替换为replace
,如果有参数count
,还可获取替换了多少处。<?php str_replace("AB","*","ABCabc"); //返回"*Cabc" $arr = array("blue","red","green","yellow"); print_r(str_replace("red","pink",$arr,$i)); echo "替换数:$i"; //返回 Array ( [0] => blue [1] => pink [2] => green [3] => yellow ) 替换数:1 ?>
str_ireplace 将进行不区分大小写的替换。
- strtolower(string): 将字符串转换为小写。
- strtoupper($str):将字符串转换为大写。
- addslashes(string):在预定义字符之前添加反斜杠。
预定义字符:单引号(‘)、双引号(")、反斜杠(\)、NULL。
<?php $str = addslashes(‘Shanghai is the "biggest" city in China.‘); echo($str); //输出 Shanghai is the \"biggest\" city in China. ?>
stripslashes(string)
删除由 addslashes() 函数添加的反斜杠。htmlentities(string)
:把字符转换为 HTML 实体。<?php $s=‘<h1>标题</h1>‘; $x=htmlentities($s); var_dump($x); //输出:string ‘<h1>标题</h1>‘ (length=27) ?>
strip_tags(string)
:剥去字符串中的 HTML 标签。<?php echo strip_tags("Hello <b>world!</b>"); //输出:Hello world! ?>
sprintf(format,arg1,arg2,arg++)
:把格式化的字符串写入变量中。<?php $info=‘姓名:%s,年龄:%d‘; $info=sprintf($info,‘胡悦‘,20); echo($info); //输出:姓名:胡悦,年龄:20 ?>
举例1:判断Email格式是否正确。
<?php $email=""; if (strpos($email, "@") && strpos($email, ".")&& strpos($email, "@")<strpos($email, ".")){ echo "Email格式正确<br/>"; } ?>
举例2:对查询关键词描红加粗。
<?php $content = "《Web标准网页设计与PHP》"; $find= "网页设计"; //假设这是查询关键词 $out=str_ireplace($find,"<strong style=‘color:red‘>$find</strong>",$content); echo $out."<br>"; ?>
6. 数组
索引数组 - 带有数字索引的数组。
关联数组 - 带有指定键的数组。
多维数组 - 包含一个或多个数组的数组。
1)数组的定义:
- 直接赋值:
$city=array(); $city[0]=‘北京‘;//数字下标 $city[1]=‘上海‘; $city[]=‘广州‘;//如果没有指定下标,则下标为下标索引最大值+1,如果是第一个元素则为0 $city[‘sz‘]=‘深圳‘;//索引下标
- 使用array函数
$city=array(‘北京‘,‘上海‘,‘广州‘); $city=array(‘bj‘=>‘北京‘,‘sh‘=>‘上海‘,‘gz‘=>‘广州‘); $a=[1,2,3,4,5];
2)数组元素的删除:
<?php $a=array(); $a[0]=‘北京‘; $a[1]=‘上海‘; $a[2]=‘广州‘; unset($a[1]); print_r( $a); //输出:Array ( [0] => 北京 [2] => 广州 ) ?>
注意:删除的元素小标不会被新添加的数组元素占用。
3)遍历数组:
- 索引数组
$a=[1,2,3,4,5]; for($i=0;$i<count($a);$i++){ echo $a[$i]; }
- 关联数组
$city=array(‘bj‘=>‘北京‘,‘sh‘=>‘上海‘,‘gz‘=>‘广州‘); foreach ($city as $key => $value) { echo $value; }
7. 函数
1)数组函数:
count($arr)
:返回数组中元素的个数。max($arr)
:返回数组中的最大值。min($arr)
:返回数组中的最小值。array_sum($arr)
:统计所有元素的和。
<span>array_values(array)</span>
:返回定数组中值,不保留键名。<?php $a=array("Name"=>"Bill","Age"=>"60","Country"=>"USA"); print_r(array_values($a)); //输出:Array ( [0] => Bill [1] => 60 [2] => USA ) ?>+
-
array_keys(array)
:返回数组所有键名的一个新数组。 array_merge()
:把一个或多个数组合并为一个数组。<?php $a1=array("a"=>"red","b"=>"green"); $a2=array("c"=>"blue","b"=>"yellow"); print_r(array_merge($a1,$a2)); //输出:Array ( [a] => red [b] => yellow [c] => blue ) ?>
array_key_exists(key, array)
:检查数组中是否存在指定的键名,存在返回true
,不存在返回false
。<?php $a=array("010"=>"北京","021"=>"上海"); if (array_key_exists("010",$a)){ echo "键存在!"; }else{ echo "键不存在!"; } ?>
array_search()
:在数组中搜索某个键值,并返回对应的键名。<?php $a=array("a"=>"red","b"=>"green","c"=>"blue"); echo array_search("red",$a);//输出:a ?>
in_array(search,array,type)
:搜索数组中是否存在指定的值,search
要搜索的值,array
数组,type
是否需要类型相同。<?php $a=array("a"=>"red","b"=>"green","c"=>"red"); print_r(array_unique($a)); //输出:Array ( [a] => red [b] => green ) ?>
array_unique()
:移除数组中的重复的值,并返回结果数组。array_count_values($arr)
:统计数组中所有值出现的个数。<?php $arr=array(2,1,3,1,2,3,2,4,3,2,1,4); $tmp=array_count_values($arr); print_r($tmp); //输出:Array ( [2] => 4 [1] => 3 [3] => 3 [4] => 2 ) ?>
<strong><span>explode(分隔字符,字符串)</span></strong>:
将字符串转换为数组。<?php $str=‘北京,上海,广州,深圳‘; $arr=explode(‘,‘,$str); print_r($arr); ?>
implode(‘分隔字符‘,$arr)
:将数组转换为字符串。<?php $arr=array(‘北京‘,‘上海‘,‘广州‘,‘深圳‘); $str=implode(‘,‘,$arr); echo $str; ?>
举例1:判断IP地址是否正确,用到了explode函数。
<?php $IP="59.51.24.54"; $arr=explode(".",$IP); if (count($arr)==4) echo "IP格式正确,IP前两位为 $arr[0].$arr[1].*.*"; ?>
举例2:检查用户输入的字符串并过滤非法字符。
<? $Patternstr = "走私|发票|办证"; $Pattern= explode("|",$Patternstr); $inputstr="走私物品增值发票"; for($i=0;$i<count($Pattern);$i++) { if (strpos($inputstr, $Pattern[$i])!==false) { $outstr=str_replace($Pattern[$i],"",$inputstr); $inputstr=$outstr; } } echo $inputstr."<br>"; ?>
2)日期和时间函数:
time()
:返回当前时间的 Unix 时间戳。<?php $nextWeek = time() + (7 * 24 * 60 * 60); //1周=7天*24小时*60分*60秒 echo ‘现在是:‘. date(‘Y-m-d‘) ."<br>"; echo ‘下一周是: ‘. date(‘Y-m-d‘, $nextWeek) ; ?>
date(format [,timestamp])
:格式化本地时间日期。<?php echo date(‘Y-m-d H:i‘); echo date(‘Y-m-d‘,1462686882); ?>
strtotime(strtime)
:将日期字符串转换为日期。
3)自定义函数:
<?php function 函数名(参数) { //函数名不区分大小写 被执行的代码; return 返回值; } ?>
文件包含语句
include(path/filename) require(path/filename)//包含文件失败,抛出致命错误
4)检验函数:
isset($var)
:检查变量 $var 是否定义。如果变量已经定义,并且其值不为 NULL,则返回true
,否则返回false
。empty($var)
:检查变量是否为空。(所谓变量为空包括两种情况:①变量未定义;②变量的值为“”、0、“0”、NULL、FALSE、以及空数组、没有任何属性的对象等)is_*()
系列函数
<span> <strong><span>is_string()</span></strong></span>
、is_int()
、is_float()
、is_bool
、is_null()
、is_array()。
5)数学函数:
round(val [,int precision)
:四舍五入intval(var)
:转换为整数floatval(var)
:转换为浮点型strval(var)
:转换为字符串rand(int min, int max)
:返回min到max之间的伪随机数abs(num)
:取绝对值