总结PHP

PHP学习总结

一、php与语言简单概述

网站web服务:

1、静态数据资源-静态页面 所有配置需要人工调整
2、动态数据资源-动态页面 某些功能配置可以自动调整

二、php编写环境

1.学习环境:phpstudy

(1)安装PHPstudy软件程序

(2)运行程序启动apache组件功能 cmd – netstat -an命令 — 80端口信息

(3)找到程序目录中WWW子目录

(4)在WWW子目录中编写一个php文件

ps:①每行代码写完都必须注意加引号“;”

​ ②两行中间空格回车多少都无所谓,可用来分段使代码更好看

​ ③php的代码部份全部要用半角的英文,切忌中文符号

​ ④PHP代码的最后一行可以加也可不加分号(最好养成每行都加的习惯)

​ ⑤给php文件命名,只用英文半脚(a-z A-Z 0-9 _-)这些字符来命名文件。文件命名不要用中文,不要用特殊附号,不要中间加空格,严格区分大小

(5)浏览器访问测试代码文件

2.写代码工具:phpstrom

二、php变量

1.变量概念:

1.可以便于修改调整数据信息

2.某些特定变量具有特定功能

变量 = 变量值

oldboy=123 

2.变量几个特点

1.必须要以 开 始 。 如 变 量 x 必 须 要 写 成 开始。如变量x必须要写成 xx

2.变量的首字母不能以数字开始

3.变量的名字区分大小写

4.变量不要用特殊符号、中文,_不算特殊符号

5.变量命名要有意义(别写xxx,aaa,ccc这种 变量名)

3.变量分类

可变变量

 $oldboy=456   $$shu <--  $biao <-- 鼠标

外部变量:

用户通过POST方法提交过来的变量 识别提交的信息进行处理

<form action="reg.php" method="post">

ps:常用外部变量

$_COOKIE得到会话控制中cookie传值
$_SESSION得到会话控制中session的值
$_FILES得到文件上传的结果
$_GET得到get传值的结果
$_POST得到post传值的结果
$_REQUEST即能得到get的传值结果,也能得到Post传值的结果

环境变量

可以获取主机信息/特殊功能作用

<?php

phpinfo();

?>

ps:其他常用的环境变量

$_SERVER[“REQUEST_METHOD”]请求当前PHP页面的方法
$_SERVER[“REQUEST_URI”]请求的URI
$_SERVER[“SERVER_SOFTWARE”]用的是哪一种服务器
$_SERVER[“REMOTE_ADDR”]客户的IP地址
$_SERVER[“SERVER_ADDR”]当前服务器的IP地址
$_SERVER[“SCRIPT_FILENAME”]主前请求文件的路径
$_SERVER[“HTTP_USER_AGENT”]当前访问这个网址的电脑和浏览器的情况
$_SERVER[“HTTP_REFERER”]上级来源(用户从哪个地址进入当前网页的)
$_SERVER[“REQUEST_TIME”]当前的时间

三、常量

概念:长久不变的值

define(常量名, 常量值)

define('MY_NAME','PHP中文网')

注:

1.常量名可以小写,但是通常大写

2.常量名可以不加引号,但是通常加上引号。

3.在字符串中调用常量的时候,必须在引号外面

4.常量名建议只用字母和下划线

ps:一些规定好的常量

*常量名**说明*
LINE当前所在的行
FILE当前文件在服务器的路径
FUNCTIOIN当前函数名
CLASS当前类名
METHOD当前成员方法名
PHP_OSPHP运行的操作系统
PHP_VERSION当前PHP的版本
TRAITTrait 的名字,php5.4新加
DIR文件所在的目录
NAMESPACE当前命名空间的名称(区分大小写)

3.5、注释

因为代码是英文的、并且代码很长,时间长了人会忘。所以我们会加上注释

单行注释

// 表示单行注释

# 也表示单行注释,用的比较少

//声明一部iphone6手机的价格变量
$iphone6_price = 6088;

//显示输出手机价格
echo $iphone6_price;

多行注释

/*
作者:oldboy
时间:2048.12.23
功能:这是一个假的多行注释的例子
*/

四、php数据类型(主要几种)

就是对数据分类的一个划分

PHP中一共有八种数据类型,包括4中标量数据类型,即boolean(布尔类型)integer(整型),float/double(浮点型)和string(字符串型)两种复合数据类型,即array(数组)和object(对象), 两种特殊的数据类型:即resource(资源)与 null (无,空白)

1. 整形数据类型 int

主要有

10进制

8进制(以0开始,后面跟0-7的整数)

16进制(以0x开始,后面跟0-f的,0x的abcdef不区分大小写)

$zhengshu=1000;
$bajingzhi = 033145;
$shiliu = 0x6ff;

2.布尔数据类型

真与假分类,多会应用布尔类型进行判断

3. 字符串类型

需要用到单引号、双引号或者字界符(需要输入非常大段的字符串时使用)

$zifu='这是一串字符';
$str = "这是另一串字符";
$dingjie = <<<ABC
 这里有很多字
ABC;

单双引号区别

1.双引号解析变量,但是单引号不解析变量。

2.在双引号里面插入变量,变量后面如果有英文或中文字符,它会把这个字符和变量拼接起来,视为一整个变量。一定要在变量后面接上特殊字符,例如空格等分开。

3.如果在双引号里面插变量的时候,后面不想有空格,可以拿大括号将变量包起来。

4.双引号解析转义字符,单引号不解析转义字符。但,单引号能解析’ 和\

转义字符:1.可以将有特殊意义的符号信息, 转变为不具有特殊的作用
2.可以将没有意义字符信息,转变为具有特殊意义的信息  例如: \n 换行符

5.单引号效率高于双引号,尽可能使用单引号

6.双号和单引号可以互插!!!双引号当中插入单引号,单引号当中插入变量,这个变量会被解析。

7.神奇的字符串拼接胶水——(.)点,用来拼接字符串。

8.我们将定界符声明字符串视为双引号一样的功能来看待。

4.浮点类型

可以理解为:我们数学里面的小数。

声明方式:普通声明方式/科学声明方式

$fudian = 12121.3132;
$fl = 0.8873;
var_dump($fl);

var_dump(识别变量) --> 变量信息类型
gettype(识别命令) --> 变量信息类型

五、php运算方式介绍

1.自增自减

$x++    $x--     ++$x      --$x

2.比较运算符号

常用的有:> , <,>= ,<= ,==(等于,单=为赋值), !=(不等)

3.逻辑运算符号

控制多个判断条件匹配关系

常用:

&& 并且

|| 或者

! 取反

4.三元运算符

将if流程控制语句做了简化

判断条件?条件真的执行语句:条件假的执行语句;

$x ? $y = 5 : $y = 6;

5.特殊符号

反引号``

在反引号中可以放入命令信息,在执行代码时,会将命令执行结果保留下来,呈现在浏览器页面

echo `ipconfig`;

六、PHP流程控制语句

1.if条件结构流程

· if(条件表达式){ 条件满足执行动作 }

· if(条件表达式){ 条件满足执行动作 }else{ 条件不满足执行相应操作 }

· if(条件表达式){ 条件满足执行动作 }elseif(第二条件){ 条件满足执行动作 }elseif(第三条件){ 条件满足执行动作 }else{所有条件都不满足执行动作}

多个条件流程控制:
<?php
//定义一个随机变量,抵达时间,随机0点至23点
$dida = rand(0,23);
if($dida > 6 && $dida < 10){
    echo '我爱泡澡';
}else if($dida >10 && $dida < 14){
    echo '吃神户牛肉';
}else if($dida >=19 && $dida < 22){
    echo '找一个朋友聊聊内心的寂寞';
}elseif($dida > 22 && $dida <= 23){
    echo '泡澡';
}elseif($dida >= 1 && $dida <3){
     echo '泡澡';
}else{
    echo '睡觉或者工作';
}
?>

2.if语句嵌套形式

<?php if(判断1){ if(判断2){ ​ 代码段 1 }else{ ​ 代码段2 ​ } }else{ if(判断3){ ​ 代码段3 ​ }else{ ​ 代码段4 ​ } } ?>
<?php
//0表示工作秘书,1表示生活秘书
//用代码模拟随机产生当前的工作是生活秘书的还是工作秘书的
$mishu = rand(0,1);
if($mishu){
       //下雨和不下雨的状态,随机产生
       //下雨状态为1
       //不下雨状态为0
       $xiyu = rand(0,1);
        if($xiyu){
             //是否购买雨伞
             $you = rand(0,1);
             if($you){
                  echo '下雨天,已购买不用买雨伞';
             }else{
                  echo '下雨天,未购买,需要买雨伞';
             }
        }else{
             //是否购买防晒霜
             $you = rand(0,1);
             if($you){
                  echo '没下雨,有防晒霜';
             }else{
                  echo '没下雨,需要准备防晒霜';
             }
        }

}else{
    //是否准备好了会议议程
    $shifou = rand(0,1);

    if($shifou){
        echo '已准备好,可以随时出发';
    }else{
         echo '没有准备好,需要打印,延迟出发';
    }

}

此例结果分析

1-取生活秘书——1-下雨状态——1-购买雨伞————输出–下雨天,已购买不用买雨伞

100 1生活秘书——0未下雨——0未买防晒霜————输出–没下雨,需要准备防晒霜

101 ——————————————————————输出–没下雨,有防晒霜

110 ———————————————————————输出–雨天,未购买,需要买雨伞

00 ————————————————————————输出–没有准备好,需要打印,延迟出发

3.while循环语句

语句结构: 条件为真会一直循环/条件为假会终止循环

while(条件){ 操作动作 }: 先判断条件再执行动作
do{ 动作 }while(条件信息): 先执行动作在判断条件

<?php
//定义需要往返的次数,老外喜欢从0开始计数,所以系统也是从0开始
$count=0;
//while后面接布尔值判断,为真执行,为假停止
//$count小于100的时候执行,也就是$count为0至99的时候执行.
//如果$count不小于100了,循环停止执行后续的代码
//循环开始处
while($count < 100){
    echo "这是王总第 $count 次出差 <br />";
    //每次执行让$count+1,这样的话,就不会产生$count永远小于100的情况了
    $count++;
}
//循环结束
?>

4.switch语句

语句结构:switch(变量){ //字符串,整形

case 具体值1:

执行代码1;

break;

case 具体值2:

执行代码2;

break;

case 具体值3:

执行代码3;

break;

defult:

}

注:break和default是可选的;不要在case后面写成分号,后面是冒号;不要在case后面写判断区间

5.for循环语句

语句结构:

for(条件01: 初始值;条件02: 判断信息(控制循环次数);条件03: 变量做自增或者自检运算)

需要执行的代码段;

<?php
for($i=1;$i<=10;$i++)
  echo ‘分手后第’.$i.’年, 我全都忘了你的样子<br />’;
}
?>

6.goto循环语句

作用:标记一个位置点, 可以利用goto代码直接跳转到代码指定标记点,执行动作
忽略一些没用操作/可以某些时候打破循环

<?php
for ($i=0;$i<100;$i++){
    echo '第'.$i.'每周往返北京大连<br />';
    if($i == 17){
        goto end;
    }
}
end:
echo '集团公司要求停止此项';
?>

七、PHP函数功能介绍

1.函数定义方法

函数的英文叫做:function,而function的解释项中有另外一个含义”功能”,函数就是功能,调用一个函数就是在调用一个功能

2.函数信息调用方法

语法规范如下:

Function 函数名(参数名1=[值1], 参数名2=[值2] , 参数名n=[值n])

{

函数中的功能体

[return 返回值]

}

3.常见函数信息

八、PHP数组与数据结构

PHP数组概念

英文是array,一组数据类型信息集合,是一个复合数据类型

多个不同数据类型信息统一赋值给一个变量, 这个变量成为数组

数组包含内容:
① 数据名称
② 数据元素信息
③ 数据下标信息 通过下标可以调取指定元素信息

数组定义方法

$shu = array(1 , 1.5 , true ,'天王盖地虎,小鸡炖蘑菇');

数组元素信息如何调取

用for循环遍历索引数组

$num = array(1,2,3,4,5,6,7,8,9,10);
for($i = 0 ; $i < count($num) ; $i++){
   echo $num[10].'<br />';
}

用数组函数调用

$mingren = array("邓超", "黄晓明", "宁泽涛", "钟汉良");
$dc = array_shift($mingren);
echo $dc .'<br />';
print_r($mingren);

九、PHP正则符号信息

作用

正则符号主要用途就是匹配信息的

PHP的正则表达示定界符的规定如下:定界符,不能用a-zA-Z0-9\ 其他的都可以用。必须成对出现,有开始就有结束

/中间写正则/
$中间写正则$	
错误的书写方式  
(中间写正则)
A中间写正则A

如何进行正则匹配

正则表达式格式:

preg_match ( string $正则 , string KaTeX parse error: Expected 'EOF', got '&' at position 12: 字符串 , array&̲结果] )

功能:根据 正 则 变 量 , 匹 配 正则变量,匹配 字符串变量。如果存在则返回匹配的个数,把匹配到的结果放到$结果变量里。如果没有匹配到结果返回0。

和正则匹配有关函数

我们常用的正则函数有:

序号函数信息说明实例
1preg_filter执行一个正则表达式搜索和替换
2preg_grep返回匹配模式的数组条目
3preg_match执行一个正则表达式匹配
4preg_match_all执行一个全局正则表达式匹配
5preg_replace_callback_array传入数组,执行一个正则表达式搜索和替换使用回调
6preg_replace_callback执行一个正则表达式搜索并且使用一个回调进行替换
7preg_replace执行一个正则表达式的搜索和替换
8preg_split通过一个正则表达式分隔字符串

十、PHP文件系统管理

1.fopen、fread、fcloes操作

file_get_contents打开文件

 $filename = 'NoAlike.txt';

   $filestring = file_get_contents($filename);
   echo $filestring;

注:file_get_contents打开文件的方式简单、粗暴。

resource fopen ( string $文件名, string 模式)

string fread ( resource $操作资源, int 读取长度)

bool fclose ( resource $操作资源 )

$fp = fopen('NoAlike.txt', "r");

注:fopen的模式的几种用法

r只读方式打开,将文件指针指向文件头。
r+读写方式打开,将文件指针指向文件头。
w写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建
w+读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建
a写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建
a+读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之
x创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建
x+创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建

2.php 创建和修改文件内容

ile_put_contents写入文件:

int file_put_contents ( string $文件路径, string $写入数据])

$data = "在PHP中文网学好PHP,妹子票子不再话下!";

   $numbytes = file_put_contents('binggege.txt', $data);

注:

① 文件不存在时, 可以进行创建
② 文件已经存在时,原有文件内容会被清空

3.创建临时文件

 //创建了一个临时文件
   $handle = tmpfile();

   //向里面写入了数据
   $numbytes = fwrite($handle, '写入临时文件');

   //关闭临时文件,文件即被删除
   fclose($handle);

4.php移动、拷贝和删除文件

重命名文件:

bool rename( 旧 名 , 旧名, ,新名);

//旧文件名
   $filename = 'test.txt';
   //新文件名
   $filename2 = $filename . '.old';
   //复制文件
   rename($filename, $filename2);

复制文件:

bool copy(源文件,目标文件)

//旧文件名
   $filename = 'copy.txt';
   //新文件名
   $filename2 = $filename . '_new';
   //修改名字。
   copy($filename, $filename2);

删除文件:

bool unlink(指定路径的文件)

 $filename = 'test.txt';

   if (unlink($filename)) {
       echo  "删除文件成功 $filename!\n";
   } else {
       echo "删除 $filename 失败!\n";
   }

5.检测文件属性函数

file_exists('install.lock')

常用文件属性函数:

bool file_exists ( $指定文件名或者文件路径)
    功能:文件是否存在。
bool is_readable ( $指定文件名或者文件路径)
    功能:文件是否可读
bool is_writeable ( $指定文件名或者文件路径)
    功能:文件是否可写
bool is_executable ( $指定文件名或者文件路径)
    功能:文件是否可执行
bool is_file ( $指定文件名或者文件路径)
    功能:是否是文件
bool is_dir ( $指定文件名或者文件路径)
    功能:是否是目录
void clearstatcache ( void )
    功能:清楚文件的状态缓存

十一、php实现文件留言本

文件结构:

index.php —展示输入框和留言内容

write.php —向message.txt写入数据

message.txt —存入聊天内容

index.php

<?Php
//设置时区
date_default_timezone_set('PRC');
//读了内容
@$string = file_get_contents('message.txt');
//如果$string 不为空的时候执行,也就是message.txt中有留言数据
if (!empty($string)) {
    //每一段留言有一个分格符,但是最后多出了一个&^。因此,我们要将&^删掉
    $string = rtrim($string, '&^');
    //以&^切成数组
    $arr = explode('&^', $string);
    //将留言内容读取
    foreach ($arr as $value) {
        //将用户名和内容分开
        list($username, $content, $time) = explode('$#', $value);
        echo '用户名为<font color="gree">' . $username . '</font>内容为<font color="red">' . $content . '</font>时间为' . date('Y-m-d H:i:s', $time);
        echo '<hr />';
    }
}
?>
<h1>基于文件的留言本演示</h1>
<form action="write.php" method="post">
    用户名:<input type="text" name="username" /><br />
    留言内容:<textarea  name="content"></textarea><br />
    <input type="submit" value="提交" />
</form>

write.php

<?php
//追加方式打开文件
$fp=fopen('message.txt','a');

//设置时间
$time=time();

//得到用户名
$username=trim($_POST['username']);
//得到内容
$content=trim($_POST['content']);


//组合写入的字符串:内容和用户之间分开,使用$#
//行与行之间分开,使用&^
$string=$username.'$#'.$content.'$#'.$time.'&^';

//写入文件
fwrite($fp,$string);

//关闭文件
fclose($fp);


header('location:index.php');

?>

十二、php实现文件上传

php文件上传的步骤:

1、系统返回的错误码详解

2、自定义判断是否超出文件大小范围

3、判断后缀名和mime类型是否符合

4、生成文件名

5、判断是否是上传文件

6、移动临时文件到指定位置

1. index.html 文件

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<h1>上传文件</h1>
<form action="chuli.php" method="post" enctype="multipart/form-data">
请选择文件:<input type="file" name="file" /><input type="submit" value="上传" />
</form>
</body>
</html>

2. chuli.php

<?php
//取文件信息
$arr = $_FILES["file"];
//var_dump($arr);
//加限制条件
//1.文件类型
//2.文件大小
//3.保存的文件名不重复
if(($arr["type"]=="image/jpeg" || $arr["type"]=="image/png" ) && $arr["size"]<10241000 )
{
//临时文件的路径
$arr["tmp_name"];
//上传的文件存放的位置
//避免文件重复: 
//1.加时间戳.time()加用户名.$uid或者加.date('YmdHis')
//2.类似网盘,使用文件夹来防止重复
$filename = "./images/".date('YmdHis').$arr["name"];
//保存之前判断该文件是否存在
  if(file_exists($filename))
  {
    echo "该文件已存在";
  }
  else
  {
  //中文名的文件出现问题,所以需要转换编码格式
  $filename = iconv("UTF-8","gb2312",$filename);
  //移动临时文件到上传的文件存放的位置(核心代码)
  //括号里:1.临时文件的路径, 2.存放的路径
  move_uploaded_file($arr["tmp_name"],$filename);
  echo "文件上传成功";
  }
}
else
{
  echo "上传的文件大小或类型不符";
}
?>

enctype=“multipart/form-data”>
请选择文件:

```

2. chuli.php

<?php
//取文件信息
$arr = $_FILES["file"];
//var_dump($arr);
//加限制条件
//1.文件类型
//2.文件大小
//3.保存的文件名不重复
if(($arr["type"]=="image/jpeg" || $arr["type"]=="image/png" ) && $arr["size"]<10241000 )
{
//临时文件的路径
$arr["tmp_name"];
//上传的文件存放的位置
//避免文件重复: 
//1.加时间戳.time()加用户名.$uid或者加.date('YmdHis')
//2.类似网盘,使用文件夹来防止重复
$filename = "./images/".date('YmdHis').$arr["name"];
//保存之前判断该文件是否存在
  if(file_exists($filename))
  {
    echo "该文件已存在";
  }
  else
  {
  //中文名的文件出现问题,所以需要转换编码格式
  $filename = iconv("UTF-8","gb2312",$filename);
  //移动临时文件到上传的文件存放的位置(核心代码)
  //括号里:1.临时文件的路径, 2.存放的路径
  move_uploaded_file($arr["tmp_name"],$filename);
  echo "文件上传成功";
  }
}
else
{
  echo "上传的文件大小或类型不符";
}
?>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值