PHP基础

php

一.基本语法

<?php
// PHP 代码
?> 
    

1.变量规则

  • 以符号$开始+变量名

  • 字母/下划线+字母/数字/下划线

  • 不能有空格

  • 大小写敏感

不用声明变量,第一次赋值时直接被创建

  • 全局变量和内部变量(local):函数内声明全局变量需要用 global关键字或者使用 $GLOBALS[index] 数组

    全局变量会被局部变量覆盖

    <?php
    $a=5;
    $b=3;
    function t()
    {
        echo $a-$b; // 输出结果为 0,如果要在函数中使用全局变量见上
    }
    t();
    ?>
    
  • 函数完成后,变量会被删除,使用static来防止删除(仍然是局部变量

  1. echo和print
echoprint
输出字符一个或者多个字符串一个
返回值无返回值1
速度更快

EOF(在命令行或侧程序语言里定义字符串)

<?php
$name="runoob";
$a= <<<EOF
        "abc"$name
        "123"
EOF; //也可以用EOD,EOT,JSON等表示,在正文中不出现即可
// 结束需要独立一行且前后不能空格
echo $a;
?>

数据类型

  • String(字符串)
  • Integer(整型)
  • Float(浮点型)
  • Boolean(布尔型)
  • Array(数组)
  • Object(对象)
  • NULL(空值)
  • Resource(资源类型)

类型比较:

  • 松散比较:使用两个等号 == 比较,只比较值,不比较类型。
  • 严格比较:用三个等号 === 比较,除了比较值,也比较类型。

PHP 用函数 var_dump()函数返回变量的数据类型和值:

***注:***字符串文 0 是转换为布尔值的特殊情况,它转换为 false。

常量

设置常量,使用 define() 函数,函数语法如下:

bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )

该函数有三个参数:

  • name:必选参数,常量名称,即标志符。
  • value:必选参数,常量的值。
  • case_insensitive :可选参数,如果设置为 TRUE,该常量则大小写不敏感。默认是大小写敏感的。

注意:常量前不能加$ 如果加了$使用,会导致报错魔术常量:

魔术常量

字符串

strlen() 函数:返回字符串的长度(字节数)。

strpos() 函数:用于在字符串内查找一个字符或一段指定的文本。

如果在字符串中找到匹配,该函数会返回第一个匹配的字符位置。如果未找到匹配,则返回 FALSE。

<?php
echo strpos("Hello world!","world");
//输出为6,从0开始
?>

运算符:

<?php
// 优先级: &&  >  =  >  and
// 优先级: ||  >  =  >  or
 
$a = 3;
$b = false;
$c = $a or $b;
var_dump($c);          // 这里的 $c 为 int 值3,而不是 boolean 值 true
$d = $a || $b;
var_dump($d);          //这里的 $d 就是 boolean 值 true 
?>

判断语句:

if…else;switch;for

PHP - 数组排序函数

  • sort() - 对数组进行升序排列
  • rsort() - 对数组进行降序排列
  • asort() - 根据关联数组的值,对数组进行升序排列
  • ksort() - 根据关联数组的键,对数组进行升序排列
  • arsort() - 根据关联数组的值,对数组进行降序排列
  • krsort() - 根据关联数组的键,对数组进行降序排列

PHP函数:php的真正威力,内置1000多函数,数组互相操作等等…

还可以自建函数

魔术常量

命名空间

  1. 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
  2. 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。

PHP测验错误:

  • 换行:PHP_EOL
  • 键名将被这样转换:null 转为(空字符串),true 转为 1,false 转为 0。

2.PHP表单

php用户输入

$_GET(会在url中显示) $_POST

表单元素

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
//htmlspecialchars:把&转义为&amp等;
//_SERVER["PHP_SELF:超级全局变量,返回当前正在执行的脚步文件名

表单验证

//preg_match — 进行正则表达式匹配。
int preg_match ( string $pattern , string $subject [, array $matches [, int $flags ]] )

//在 subject 字符串中搜索与 pattern 给出的正则表达式相匹配的内容。如果提供了 matches ,则其会被搜索的结果所填充。$matches[0] 将包含与整个模式匹配的文本,$matches[1] 将包含与第一个捕获的括号中的子模式所匹配的文本,以此类推。

高级

1.多维数组
2.日期

string date ( string $format [, int $timestamp ] )

<?php
echo date("Y/m/d") . "<br>";
echo date("Y.m.d") . "<br>";
echo date("Y-m-d");
?>
//不同的格式

3.包含(抽取公共部分
include 和 require 的区别

  • require 一般放在 PHP 文件的最前面,程序在执行前就会先导入要引用的文件;
  • include 一般放在程序的流程控制中,当程序执行时碰到才会引用,简化程序的执行流程。
  • require 引入的文件有错误时,执行会中断,并返回一个致命错误;
  • include 引入的文件有错误时,会继续执行,并返回一个警告。

4.文件处理

<?php
$file = fopen("test.txt","r");	//打开文件,后一个为对文件的状态,只读/读写/只写

//执行一些代码,

fclose($file); //关闭文件
?>

5.文件上传
6.Cokkie和session
session:

/// 必须启动session
<?php session_start(); ?>
<html>
<body> 
</body>
</html>
//销毁session;2选1
<?php
 unset($_SESSION['views']);//释放指定变量
session_destroy(); //彻底销毁session
?>

cookie识别用户,
(1)cookie数据存放在客户的浏览器上,session数据放在服务器上
(2)cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,如果主要考虑到安全应当使用session
(3)session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,如果 主要考虑到减轻服务器性能方面,应当使用COOKIE
(4)单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的COOKIE不能3K。
(5)所以:将登陆信息等重要信息存放为SESSION;其他信息如果需要保留,可以放在COOKIE中
7.错误处理

error_function(error_level,error_message,
error_file,error_line,error_context)

error_level必需为用户定义的错误规定错误报告级别。必须是一个数字。参见下面的表格:错误报告级别。
error_message必需为用户定义的错误规定错误消息。
error_file可选规定错误发生的文件名。
error_line可选规定错误发生的行号。
error_context可选规定一个数组,包含了当错误发生时在用的每个变量以及它们的值。

8异常
Try :使用异常的函数应该位于 “try” 代码块内。如果没有触发异常,则代码将照常继续执行。但是如果异常被触发,会抛出一个异常。
Throw :规定如何触发异常。每一个 “throw” 必须对应至少一个 “catch”。
Catch : “catch” 代码块会捕获异常,并创建一个包含异常信息的对象。
1.简单的try catch
2.自定义一个customException()来捕捉异常(可以提示行号,输入结果等等)
3.使用if/else或switch捕获不同的异常
4。try{try catch} catch(再次抛出对用户更能接受的异常)
9.过滤器
通过指定的函数过滤外来数据:
Validating 过滤器:

  • 用于验证用户输入
  • 严格的格式规则(比如 URL 或 E-Mail 验证)
  • 如果成功则返回预期的类型,如果失败则返回 FALSE
    Sanitizing 过滤器:
  • 用于允许或禁止字符串中指定的字符
  • 无数据格式规则
  • 始终返回字符串
    清理数据
    用filter_input清洗从表单接受到的数据
<?php
if(!filter_has_var(INPUT_GET, "url"))
{
    echo("没有 url 参数");
}
else
{
    $url = filter_input(INPUT_GET, 
    "url", FILTER_SANITIZE_URL);
    echo $url;
}

过滤过个

<?php
$filters = array
(
    "name" => array
    (
        "filter"=>FILTER_SANITIZE_STRING //指定输入的过滤
    ),
    "age" => array
    (
        "filter"=>FILTER_VALIDATE_INT,
        "options"=>array
        (
            "min_range"=>1,
            "max_range"=>120
        )
    ),
    "email"=> FILTER_VALIDATE_EMAIL
);
 //调用 filter_input_array() 函数,参数包括 GET 输入变量及刚才设置的数组
$result = filter_input_array(INPUT_GET, $filters);
 //检测 $result 变量中的 "age" 和 "email" 变量是否有非法的输入。(如果存在非法输入,在使用 filter_input_array() 函数之后,输入变量为 FALSE。)
if (!$result["age"])
{
    echo("年龄必须在 1 到 120 之间。<br>");
}
elseif(!$result["email"])
{
    echo("E-Mail 不合法<br>");
}
else
{
    echo("输入正确");
}
?>

注意: filter_Input_array()的第二个参数
如果该参数是单一过滤器的 ID,那么这个指定的过滤器会过滤输入数组中所有的值。
如果该参数是一个数组,那么此数组必须遵循下面的规则:
必须是一个关联数组,其中包含的输入变量是数组的键(比如 “age” 输入变量)
此数组的值必须是过滤器的 ID ,或者是规定了过滤器、标志和选项的数组
使用 Filter Callback
通过使用 FILTER_CALLBACK 过滤器,可以调用自定义的函数,把它作为一个过滤器来使用。这样,我们就拥有了数据过滤的完全控制权。
您可以创建自己的自定义函数,也可以使用已存在的 PHP 函数。
将您准备用到的过滤器的函数,按指定选项的规定方法进行规定。在关联数组中,带有名称 “options”。

<?php
function convertSpace($string)
{
    return str_replace("_", ".", $string);
}
 
$string = "www_runoob_com!";
 
echo filter_var($string, FILTER_CALLBACK,
array("options"=>"convertSpace"));
?>

:通过各种函数对表达传过来的数据进行过滤,清洗或者说是替换等操作。
JSON
|json_encode| 对变量进行 JSON 编码 |
| — | — |—
| json_decode | 对 JSON 格式的字符串进行解码,转换为 PHP 变量 |
| json_last_error | 返回最后发生的错误 |

//语法:成功返回数据,失败则返回FALSE
string json_encode ( $value [, $options = 0 ] )

json_decode:对json字符串解码

mixed json_decode ($json_string [,$assoc = false [, $depth = 512 [, $options = 0 ]]])
  • json_string: 待解码的 JSON 字符串,必须是 UTF-8 编码数据
  • assoc: 当该参数为 TRUE 时,将返回数组,FALSE 时返回对象。
  • depth: 整数类型的参数,它指定递归深度
  • options: 二进制掩码,目前只支持 JSON_BIGINT_AS_STRING
<?php
   $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

   var_dump(json_decode($json));
   var_dump(json_decode($json, true));
?>

输出:
object(stdClass)#1 (5) {
[“a”] => int(1)
[“b”] => int(2)
[“c”] => int(3)
[“d”] => int(4)
[“e”] => int(5)
}

array(5) {
[“a”] => int(1)
[“b”] => int(2)
[“c”] => int(3)
[“d”] => int(4)
[“e”] => int(5)
}
6.6
杂项 text
单箭头:引用类的属性和方法,
双箭头:定义数组,声明数组时用
foreach遍历数组

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值