IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> php自学基础学习实例(一) -> 正文阅读

[PHP知识库]php自学基础学习实例(一)

<?php

declare(strict_types=1);

/*
 *     四川省校霆光明峰大数据科技有限公司.
 *     我们致力为宠物提供更好地社会服务--栖遁宠物(https://www.7evil.cn).
 *    (c) WiFiMing <1940577845@qq.com>;
 *        WuXianMing <wifiming.com>;
 *    We are committed to providing better social services for pets.
 *    This file is not open.
 *    Any use and reproduction is prohibited without official written authorization.
 *    未经授权我们不接受您以任何方式修改我们的著作声明,以及以任何说辞来使用我们的代码用于任何目的.
 */

/*
$x = 'a';
$y = 'b';
var_dump($x < $y);
var_dump('ab' == 'ba');
*/

//太空船运算符
/*
$a=8;
$b=5;
var_dump($a<=>$b); //小于等于-1  等于的话等于0  大于的话等于1
*/

//字符存在且不为空则运算输出结果
/*

$a = 2;
$b = 20;
$c = 3;
var_dump($a??$b??$c);
*/

//逻辑运算符
/*
//逻辑运算符&&当两个条件为真时,结果为真,否则为假
$a = 1;
$b = 2;
var_dump($a && $b);

$a = 1;
$b = null;
var_dump($a && $b);
*/

//逻辑运算符||两个变量为假则为假
/*
$a = 1;
$b = null;
var_dump($a || $b);

$a = null;
$b = null;
var_dump($a || $b);
*/

//逻辑运算符!真假取反的
/*
$a = 1;
$b = !$a;
var_dump($b);
*/

//计算机在确认两个条件是否为全真或全假时,碰到第一个值为假,后面的运算将会停止
/*
$a = 0;
$b = 0;
$c = $a++ && $b++;
var_dump($a,$b,$c);
*/

//if 循环语句的使用
/*
if(条件){
    执行条件;
}

if(条件1){
    执行条件1;
} else if (条件2){
    执行条件2;
} else if (条件3){
    执行条件3;
} else if (条件4){
    执行条件4;
} else if (条件5){
    执行条件5;
} else if (条件6){
    执行条件6;
} else {
    当上述条件都不满足时,执行这个条件7
}   */

//遍历数组
/*
$name = ['吴限明','袁小钧','吴翰霖', '吴迪'];
$count = count($name);
$i = 0;
while ($i <= 4){
    if ($name[$i]=='吴限明'){
        echo $name[$i].'欢迎您!';
    } else{
        echo $name[$i].'您被吳限明先生所欢迎!';
    }
    $i ++;
};
$name[4]='李白';
print_r($name)
*/

//自定义函数
/*
function 函数名([参数1,参数2,参数3...参数N]){
    函数体(即带入参数执行的代码段);
    return 返回某值;        //return会终止函数的执行,后面的代码不会执行
}

函数名()  //函数的调用执行,只有调用才会执行,不调用不会执行,不能重复定义,在哪里调用就在哪里返回

$变量名 = 函数名(参数1,参数2,参数3...参数N)+2   //实例,函数可以直接删除运算
*/

//实参与形参
/*
function name($name='袁小钧',$age=22)  //这里的参数是形参,$age默认值为22.
{
    echo $name.'欢迎您';
    echo "\n";
    echo '您现在'.$age.'岁';
}
name();  //这里的参数是实参
*/

//函数的局部变量
/*
function num($name){
    $name=$name;     //函数内部的变量 称为局部变量,不影响全局,实例中的局部变量分为动态(普通)变量,它只能运用一次
    static $age=18;  //函数内部的变量 称为局部变量,不影响全局,实例中的局部变量分为静态(普通)变量,静态变量申明static关键字,它可以在函数体内重复运用
    $age ++;
    var_dump($age);
}
num('吴限明');
num('吴限明');
num('吴限明');
*/

//函数的全局变量
/*
$name = '吴限明';
$age = 23;
function name()
{
    global $name;  //通过global关键词定义局部变量为拟用全局变量仅作用于函数体内
    $name = '袁小钧'; //拟用全局变量为函数体内,再更变它的值,会影响全局的变量
    $age = 18;
    var_dump($name);
    var_dump($age);  //全局变量与局部变量同名的变量不会互相干扰
}
name();
var_dump($name);
*/

//可变变量
//第一种样式
/*
$x = 'name';        //定义变量
$$x = 'wifiming';  //将变量的值作为变量,但定义变量的值不能为数字开头
var_dump($x,$name);
*/
//第二种样式
/*
$name = '吴限明';
$nickname =$name;
$wifiming = $nickname;
var_dump($$wifiming);
*/
//第三种样式
/*
$name = '吴限明';
$nickname =$name;   //没有使用&引用变量符号,它的值不会因为name值后面的改变而改变
$wifiming = &$name;  //&是引用符号,引用这个变量,好处就是两个变量无论改变哪个,两个值都会改变,在函数中也可以引用
$wifiming = '袁小钧';
var_dump($name);
var_dump($nickname);
var_dump($wifiming);
*/

//常量的认识
/*
 *定义常量:define('常量名','常量值',布尔值是否区分大小写默认为false);
 *常量不可变更值;
 * 严格区分大小写;
 * 没有声明的常量会被php转化为字符串输出
 * 与变量的区别
        1.不能重复定义(覆盖)
        2.访问不需要$符
        3.常量无法被销毁unset()
        4.常量在函数体中可以直接被拟用,全局有效

*魔术常量(php拟定的)
        __LINE__ 文件中的当前行号。
        __FILE__ 文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径。
        __DIR__ 文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。它等价于 dirname(__FILE__)。除非是根目录,否则目录中名不包括末尾的斜杠。(PHP 5.3.0中新增) =
        __FUNCTION__ 函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。
        __CLASS__ 类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。类名包括其被声明的作用区域(例如 Foo\Bar)。注意自 PHP 5.4 起 __CLASS__ 对 trait 也起作用。当用在 trait 方法中时,__CLASS__ 是调用 trait 方法的类的名字。
        __TRAIT__ Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4 起此常量返回 trait 被定义时的名字(区分大小写)。Trait 名包括其被声明的作用区域(例如 Foo\Bar)。
        __METHOD__ 类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。
        __NAMESPACE__ 当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0 新增)。

*常量的值必须是标量(php不同版本不同)
    * boolean(布尔型)
    * integer(整型)
    * float(浮点型,也称作 double)
    * string(字符串)


*/

//函数的多个参数默认值必须放在形参的后面
/*
function people($woman,$man='吴限明')  //形参
{
    echo $man.'和'.$woman.'永远在一起!';
}
people('袁小钧')       //实参
*/

//函数的参数默认值禁止使用计算获得数值 -错误实例
/*
$name = '吴限明';
var_dump($name);
function people($woman,$man=&$name)  //形参
{
    echo $man.'和'.$woman.'永远在一起!';
}
people('袁小钧')       //实参
*/

//函数中可以约定形参的数据类型
/*
function wifiming_age(int $thisyear,int $nextyear) //形参
{
    echo '今年我'.$thisyear.'岁了.';
    echo  '明年我就'.$nextyear.'岁了';
}
wifiming_age(22,23)  //实参
*/

//函数中可以限定运算输出的数据类型--返回类型声明
/*
function age(int $wifiming,int $shirley):int   //:int是限定函數输出为整型
{
   $ages =  $wifiming +$shirley;
   echo $ages;
   return $ages;
}
age(23,22)
*/

//任意参数的函数获取可变参数
//方法一
/*
function foo(){
    echo func_get_arg(0);          //函数内的内置函数:输入键值即可获取指定的值
    echo '<br>';
  $num = func_get_args();        //函数内的内置函数:获取所有可变的实参参数值
    echo $num;   //只能输出它的类型
    echo '<pre>';
    print_r($num);  //将它的值以类型的方式完整展现
    echo '</pre>';
    echo '<br>';  //换行
  echo func_num_args();        //函数内的内置函数:获取实参参数的个数
}
foo(3,5,9,11,23,27,29);
*/
//方法二
/*
function foo(...$name)  //用...声明函数内形参为任意参数
{
    echo '<pre>';
        print_r($name);  //通过数组的类型打印出所有实参
    echo '</pre>';

    echo '<h1>';
    echo $name[1];   //通过键值获取指定参数数值
    echo '<h1>';

    echo '<hr>';
    $num = count($name);  //使用count()获取形参的实际实参个数
    var_dump($num);
}
foo('吴限明','袁小钧','吴迪','吴袁');
*/

//函数中实参引用外部变量
/*
$x = 100;
function foo($x)
{
    var_dump($x);
}
foo($x);
*/

//匿名函数
/*
$name = function ()  //这里没有函数名
{
    echo '我是匿名者,函数!';
};
$name();  //调用匿名函数
echo '<br>';
var_dump($name);   //匿名函数的变量类型
echo '<br>';
$name = null; //函数随着变量被设置为空而销毁
var_dump($name);   //变量的类型
//$name();    //在这里已经就没发用这个函数了
*/

//变量函数-系统变量函数:
/*
max();       //找出最大值
min();       //找出最小值
unset();      //消除变量的值
isset();   //检测变量是否已设置并且非 NULL
empty();  //检查一个变量是否为空
include();
require()
*/

//回调函数--调用其它函数参与运算
/*
function maxNum($x)  //将形参设置为max系统内置变量函数
{
    $y = $x(1,2,3,4,5,6,7);
    var_dump($y);
}
maxNum('max');   //实参为max系统内置变量函数
*/

//递归函数 --自己调用自己
//用于理解的实例
/*
function yuju()
{

    echo '我在自己调用我自己!<br>';
    yuju();
    exit();

}
yuju();
*/
//  迷惑行为
/*
function num($x)
{
    //echo $x . '<br>';
    if ($x > 1) {
        num($x-1);
    }
    echo '<hr>';
    echo $x . '<br>';    //返回上次运算的值
}
num(10)
*/

//自定义函数库include:包含并执行指定文件,发生错误时警告,继续脚本运行,//引用文件就像粘贴在这个文档里面一样,所以自定义函数库不支持一起使用
/*
include 'function.php';   //调用function文件中的函数
fn1(100);
*/

//自定义函数库require:包含并执行指定文件,发生错误时提示知名错误,中断脚本运行,//引用文件就像粘贴在这个文档里面一样,自定义函数库不支持一起使用
/*
require 'function.php';
fn2(200);
*/

//自定义函数重复使用,包含仅执行一次
/*
include_once 'function.php';
fn1(100);
require_once 'function.php';
fn2(200);
include_once 'function.php';
fn1(150);
require_once 'function.php';
fn2(280);
*/

//数据的认知
//声明数组
/*
        1.array(1,2,3,4,5);
        2.[1,2,3,4,5]
*/

//声明键=>值,一对是一个元素
/*
$age = ['wifiming' => 23,'shirely' => 22,'wushuang'=>null];
print_r($age);
echo '吴限明今年的年龄:'.$age['wifiming'];   //php推荐方式为数组['键名'],加上双引号;
echo '吴霜今年的年龄:'.$age['wushuang'];
echo "吴限明今年{$age['wifiming']}了,请问他明年多大?"   //双引号可以解析变量,但是将数组放入其中,使用{}进行引用
*/

//数组的遍历查询
//使用for方式进行遍历
/*
$name=array("吴限明","袁小钧","吴迪","吴袁","吴霜");
$arrlength=count($name);   //统计数组长度count()函数

for($x=0;$x<$arrlength;$x++)
{
    echo $name[$x];
    echo "<br>";
}
*/

//使用foreach方式进行遍历
/*
$age=array("吴限明"=>23,"袁小钧"=>22,"吴迪"=>3,"吴袁"=>3);

foreach($age as $x=>$x_value)    //as的意识是变量数组中的,$age变量数组中的键名拟定为$x,值拟定为$x_value
{
    echo "Key=" . $x . ", Value=" . $x_value;
    echo "<br>";
}

$age['吴袁'] = 1.5;     //通过这种变量赋值的方式将变量的值进行修改
$age['吴霜'] =null;    //通过这种变量赋值的方式将变量的值进行添加
$age[] =100;            //未声明数组键名的情况下变量会自动添加索引键名,默认情况从0开始
print_r($age)
*/

//数据的操作--删除
/*
$age=array("吴限明"=>23,"袁小钧"=>22,"吴迪"=>3,"吴袁"=>3);
unset($age['吴袁']);   //删除某个键值元素
print_r($age);
unset($age);            //销毁整个数组
var_dump($age);
*/

//数组的键名输出
/*
$color = array("blue", "red", "green", "blue", "blue");
print_r(array_keys($color, "blue"));     //filter_value是过滤值,确定哪个值为输出,然后把一样的值的键名输出
*/

//返回数组中所有的值
/*
$array = array("size" => "XL", "color" => "gold");
print_r(array_values($array));
*/

//超全局数据不需要额外定义,直接可以使用在任何地方
/*
    $GLOBALS
    $_SERVER
    $_REQUEST
    $_POST
    $_GET
    $_FILES
    $_ENV
    $_COOKIE
    $_SESSION
*/

//post请求获取数据   //get请求只需要改变为$_POST为$_GET
/*
print_r($_POST);
echo "<br>";
echo 'username:'. $_POST['username'];
echo "<br>";
echo 'passwd:'.$_POST['passwd']
*/

//服务器和执行环境信息
//print_r($_SERVER);   //$_SERVE服务器函数

//数组函数
/*
 * ?array_change_key_case — 将数组中的所有键名修改为全大写或小写
?array_chunk — 将一个数组分割成多个
?array_column — 返回数组中指定的一列
?array_combine — 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值
?array_count_values — 统计数组中所有的值
?array_diff_assoc — 带索引检查计算数组的差集
?array_diff_key — 使用键名比较计算数组的差集
?array_diff_uassoc — 用用户提供的回调函数做索引检查来计算数组的差集
?array_diff_ukey — 用回调函数对键名比较计算数组的差集
?array_diff — 计算数组的差集
?array_fill_keys — 使用指定的键和值填充数组
?array_fill — 用给定的值填充数组
?array_filter — 用回调函数过滤数组中的单元
?array_flip — 交换数组中的键和值
?array_intersect_assoc — 带索引检查计算数组的交集
?array_intersect_key — 使用键名比较计算数组的交集
?array_intersect_uassoc — 带索引检查计算数组的交集,用回调函数比较索引
?array_intersect_ukey — 用回调函数比较键名来计算数组的交集
?array_intersect — 计算数组的交集
?array_key_exists — 检查数组里是否有指定的键名或索引
?array_key_first — Gets the first key of an array
?array_key_last — Gets the last key of an array
?array_keys — 返回数组中部分的或所有的键名
?array_map — 为数组的每个元素应用回调函数
?array_merge_recursive — 递归地合并一个或多个数组
?array_merge — 合并一个或多个数组
?array_multisort — 对多个数组或多维数组进行排序
?array_pad — 以指定长度将一个值填充进数组
?array_pop — 弹出数组最后一个单元(出栈)
?array_product — 计算数组中所有值的乘积
?array_push — 将一个或多个单元压入数组的末尾(入栈)
?array_rand — 从数组中随机取出一个或多个单元
?array_reduce — 用回调函数迭代地将数组简化为单一的值
?array_replace_recursive — 使用传递的数组递归替换第一个数组的元素
?array_replace — 使用传递的数组替换第一个数组的元素
?array_reverse — 返回单元顺序相反的数组
?array_search — 在数组中搜索给定的值,如果成功则返回首个相应的键名
?array_shift — 将数组开头的单元移出数组
?array_slice — 从数组中取出一段
?array_splice — 去掉数组中的某一部分并用其它值取代
?array_sum — 对数组中所有值求和
?array_udiff_assoc — 带索引检查计算数组的差集,用回调函数比较数据
?array_udiff_uassoc — 带索引检查计算数组的差集,用回调函数比较数据和索引
?array_udiff — 用回调函数比较数据来计算数组的差集
?array_uintersect_assoc — 带索引检查计算数组的交集,用回调函数比较数据
?array_uintersect_uassoc — 带索引检查计算数组的交集,用单独的回调函数比较数据和索引
?array_uintersect — 计算数组的交集,用回调函数比较数据
?array_unique — 移除数组中重复的值
?array_unshift — 在数组开头插入一个或多个单元
?array_values — 返回数组中所有的值
?array_walk_recursive — 对数组中的每个成员递归地应用用户函数
?array_walk — 使用用户自定义函数对数组中的每个元素做回调处理
?array — 新建一个数组
?arsort — 对数组进行逆向排序并保持索引关系
?asort — 对数组进行排序并保持索引关系
?compact — 建立一个数组,包括变量名和它们的值
?count — 计算数组中的单元数目,或对象中的属性个数
?current — 返回数组中的当前单元
?each — 返回数组中当前的键/值对并将数组指针向前移动一步
?end — 将数组的内部指针指向最后一个单元
?extract — 从数组中将变量导入到当前的符号表
?in_array — 检查数组中是否存在某个值
?key_exists — 别名 array_key_exists
?key — 从关联数组中取得键名
?krsort — 对数组按照键名逆向排序
?ksort — 对数组按照键名排序
?list — 把数组中的值赋给一组变量
?natcasesort — 用“自然排序”算法对数组进行不区分大小写字母的排序
?natsort — 用“自然排序”算法对数组排序
?next — 将数组中的内部指针向前移动一位
?pos — current 的别名
?prev — 将数组的内部指针倒回一位
?range — 根据范围创建数组,包含指定的元素
?reset — 将数组的内部指针指向第一个单元
?rsort — 对数组逆向排序
?shuffle — 打乱数组
?sizeof — count 的别名
?sort — 对数组排序
?uasort — 使用用户自定义的比较函数对数组中的值进行排序并保持索引关联
?uksort — 使用用户自定义的比较函数对数组中的键名进行排序
?usort — 使用用户自定义的比较函数对数组中的值进行排序
*/

//字符串常用函数
/*
 * ?addcslashes — 以 C 语言风格使用反斜线转义字符串中的字符
?addslashes — 使用反斜线引用字符串
?bin2hex — 函数把包含数据的二进制字符串转换为十六进制值
?chop — rtrim 的别名
?chr — 返回指定的字符
?chunk_split — 将字符串分割成小块
?convert_cyr_string — 将字符由一种 Cyrillic 字符转换成另一种
?convert_uudecode — 解码一个 uuencode 编码的字符串
?convert_uuencode — 使用 uuencode 编码一个字符串
?count_chars — 返回字符串所用字符的信息
?crc32 — 计算一个字符串的 crc32 多项式
?crypt — 单向字符串散列
?echo — 输出一个或多个字符串
?explode — 使用一个字符串分割另一个字符串
?fprintf — 将格式化后的字符串写入到流
?get_html_translation_table — 返回使用 htmlspecialchars 和 htmlentities 后的转换表
?hebrev — 将逻辑顺序希伯来文(logical-Hebrew)转换为视觉顺序希伯来文(visual-Hebrew)
?hebrevc — 将逻辑顺序希伯来文(logical-Hebrew)转换为视觉顺序希伯来文(visual-Hebrew),并且转换换行符
?hex2bin — 转换十六进制字符串为二进制字符串
?html_entity_decode — Convert HTML entities to their corresponding characters
?htmlentities — 将字符转换为 HTML 转义字符
?htmlspecialchars_decode — 将特殊的 HTML 实体转换回普通字符
?htmlspecialchars — 将特殊字符转换为 HTML 实体
?implode — 将一个一维数组的值转化为字符串
?join — 别名 implode
?lcfirst — 使一个字符串的第一个字符小写
?levenshtein — 计算两个字符串之间的编辑距离
?localeconv — Get numeric formatting information
?ltrim — 删除字符串开头的空白字符(或其他字符)
?md5_file — 计算指定文件的 MD5 散列值
?md5 — 计算字符串的 MD5 散列值
?metaphone — Calculate the metaphone key of a string
?money_format — 将数字格式化成货币字符串
?nl_langinfo — Query language and locale information
?nl2br — 在字符串所有新行之前插入 HTML 换行标记
?number_format — 以千位分隔符方式格式化一个数字
?ord — 转换字符串第一个字节为 0-255 之间的值
?parse_str — 将字符串解析成多个变量
?print — 输出字符串
?printf — 输出格式化字符串
?quoted_printable_decode — 将 quoted-printable 字符串转换为 8-bit 字符串
?quoted_printable_encode — 将 8-bit 字符串转换成 quoted-printable 字符串
?quotemeta — 转义元字符集
?rtrim — 删除字符串末端的空白字符(或者其他字符)
?setlocale — 设置地区信息
?sha1_file — 计算文件的 sha1 散列值
?sha1 — 计算字符串的 sha1 散列值
?similar_text — 计算两个字符串的相似度
?soundex — Calculate the soundex key of a string
?sprintf — Return a formatted string
?sscanf — 根据指定格式解析输入的字符
?str_getcsv — 解析 CSV 字符串为一个数组
?str_ireplace — str_replace 的忽略大小写版本
?str_pad — 使用另一个字符串填充字符串为指定长度
?str_repeat — 重复一个字符串
?str_replace — 子字符串替换
?str_rot13 — 对字符串执行 ROT13 转换
?str_shuffle — 随机打乱一个字符串
?str_split — 将字符串转换为数组
?str_word_count — 返回字符串中单词的使用情况
?strcasecmp — 二进制安全比较字符串(不区分大小写)
?strchr — 别名 strstr
?strcmp — 二进制安全字符串比较
?strcoll — 基于区域设置的字符串比较
?strcspn — 获取不匹配遮罩的起始子字符串的长度
?strip_tags — 从字符串中去除 HTML 和 PHP 标记
?stripcslashes — 反引用一个使用 addcslashes 转义的字符串
?stripos — 查找字符串首次出现的位置(不区分大小写)
?stripslashes — 反引用一个引用字符串
?stristr — strstr 函数的忽略大小写版本
?strlen — 获取字符串长度
?strnatcasecmp — 使用“自然顺序”算法比较字符串(不区分大小写)
?strnatcmp — 使用自然排序算法比较字符串
?strncasecmp — 二进制安全比较字符串开头的若干个字符(不区分大小写)
?strncmp — 二进制安全比较字符串开头的若干个字符
?strpbrk — 在字符串中查找一组字符的任何一个字符
?strpos — 查找字符串首次出现的位置
?strrchr — 查找指定字符在字符串中的最后一次出现
?strrev — 反转字符串
?strripos — 计算指定字符串在目标字符串中最后一次出现的位置(不区分大小写)
?strrpos — 计算指定字符串在目标字符串中最后一次出现的位置
?strspn — 计算字符串中全部字符都存在于指定字符集合中的第一段子串的长度。
?strstr — 查找字符串的首次出现
?strtok — 标记分割字符串
?strtolower — 将字符串转化为小写
?strtoupper — 将字符串转化为大写
?strtr — 转换指定字符
?substr_compare — 二进制安全比较字符串(从偏移位置比较指定长度)
?substr_count — 计算字串出现的次数
?substr_replace — 替换字符串的子串
?substr — 返回字符串的子串
?trim — 去除字符串首尾处的空白字符(或者其他字符)
?ucfirst — 将字符串的首字母转换为大写
?ucwords — 将字符串中每个单词的首字母转换为大写
?vfprintf — 将格式化字符串写入流
?vprintf — 输出格式化字符串
?vsprintf — 返回格式化字符串
?wordwrap — 打断字符串为指定数量的字串
 */

//PHP语法错误
/*
 * 错误信息的组成:
 *          1.错误等级
 *              Parse error:解析错误,语法错误,写了错别字之类的.脚本会终止执行
 *          2.错误消息
 *              syntax error:
 *          3.错误文件
 *          4.错误行号
*/

//不同等级的运行错误代码:
/*
Notice错误:完全不会影响执行,主要是写法不受php推荐;  //提示性
warning:运行时的警告,需要解决的问题;                 //处理
error:致命错误,无法运行下面代码                   //致命问题
*/

//生产环境-屏蔽错误不被客户端查看
//在服务器 php.in文件中搜索"display_errors",将On写为off,重启php,这样所有文件就都不提醒了;

//配置错误日志
/*
    log_errors = on;
        //设置是否将脚本运行的错误信息记录到服务器错误日志

    error_log = '';
        //将错误记录到指定的文件

    log_errors_max_len
        //设置每条错误记录的最大字节数,默认为1024,设置为0则不限长度

//php.ini配置错误日志的步骤:
        1.关闭错误报告,不允许输出到服务器
            display_errors = off;
        2.设置错误报道的级别
            error_reporting = E_ALL;
        3.开启日志记录
            log_errors = on;
        4.设置每条错误记录的长度
            log_errors_max_len = 1024;
        5.指定记录错误的文件
            error_log = "c:/xxx.log"
        6.代码kit另一行可以标注修改记录



*/
//错误常量集
/*
1 E_ERROR (integer)  致命的运行时错误。这类错误一般是不可恢复的情况,例如内存分配导致的问题。后果是导致脚本终止不再继续运行。
2 E_WARNING (integer)  运行时警告 (非致命错误)。仅给出提示信息,但是脚本不会终止运行。
4 E_PARSE (integer)  编译时语法解析错误。解析错误仅仅由分析器产生。
8 E_NOTICE (integer)  运行时通知。表示脚本遇到可能会表现为错误的情况,但是在可以正常运行的脚本里面也可能会有类似的通知。
16 E_CORE_ERROR (integer)  在PHP初始化启动过程中发生的致命错误。该错误类似 E_ERROR,但是是由PHP引擎核心产生的。
32 E_CORE_WARNING (integer)  PHP初始化启动过程中发生的警告 (非致命错误) 。类似 E_WARNING,但是是由PHP引擎核心产生的。
64 E_COMPILE_ERROR (integer)  致命编译时错误。类似E_ERROR, 但是是由Zend脚本引擎产生的。
128 E_COMPILE_WARNING (integer)  编译时警告 (非致命错误)。类似 E_WARNING,但是是由Zend脚本引擎产生的。
256 E_USER_ERROR (integer)  用户产生的错误信息。类似 E_ERROR, 但是是由用户自己在代码中使用PHP函数 trigger_error()来产生的。
512 E_USER_WARNING (integer)  用户产生的警告信息。类似 E_WARNING, 但是是由用户自己在代码中使用PHP函数 trigger_error()来产生的。
1024 E_USER_NOTICE (integer)  用户产生的通知信息。类似 E_NOTICE, 但是是由用户自己在代码中使用PHP函数 trigger_error()来产生的。
2048 E_STRICT (integer)  启用 PHP 对代码的修改建议,以确保代码具有最佳的互操作性和向前兼容性。
4096 E_RECOVERABLE_ERROR (integer)  可被捕捉的致命错误。 它表示发生了一个可能非常危险的错误,但是还没有导致PHP引擎处于不稳定的状态。 如果该错误没有被用户自定义句柄捕获 (参见 set_error_handler()),将成为一个 E_ERROR 从而脚本会终止运行。
8192 E_DEPRECATED (integer)  运行时通知。启用后将会对在未来版本中可能无法正常工作的代码给出警告。
16384 E_USER_DEPRECATED (integer)  用户产少的警告信息。 类似 E_DEPRECATED, 但是是由用户自己在代码中使用PHP函数 trigger_error()来产生的。
30719 E_ALL (integer)  E_STRICT出外的所有错误和警告信息。  30719 in PHP 5.3.x,6143 in

*/

//自定义错误报告
/*
    set_error_handler ('self_error_handler');
    function self_error_handler ($level,$message,$file,$line)
    {
        echo "错误等级:{$level} <br>";
        echo "错误消息:{$message} <br>";
        echo "错误文件:{$file} <br>";
        echo "错误行号:{$line} <br>";
        echo '<hr>';

        switch ($level){
            case E_NOTICE:
                echo "NOTICE {$level} {$message} !";
                break;

            case E_WARNING:
                echo "WARNING {$level} {$message} !";
                break;
        }
    }
*/

//自定义发送邮件
/*
require 'mail.php';  //引入邮箱函数文件
Sendmail('这是吴限明的主题','这是吴限明的发送内容','1004960729@qq.com');  //使用自定义发送邮箱函数
*/

//时间函数-时间戳-系统修改时间分区  在php中php.in文件里找到date.timezone = 改为date.timezone = PRC;
/*
echo time();   //计算机是按照时间秒数计算,从1970年1月1日到现在;
echo "<br>";
echo date('Y-m-d H:i:s',time());
*/

//吴限明跟袁小钧已经在一起多少天了?
/*
    //echo date('Y-m-d H:i:s',time()).'<br>';
    //我们开始的时间
    $startTime = '2021-01-16 00:00:00';
    //时间转化为时间戳
    $startTimestamp = strtotime($startTime);
    //当前的时间
    $currentTime = time();
    //var_dump($startTimestamp,$currentTime);
    //计算时间差
    $countTime = $currentTime - $startTimestamp;
    //var_dump($countTime);
    //var_dump($countTime/60/60/24);
    $day = $countTime / 60 / 60 / 24;  //计算天数
    $hour = floor($countTime / 3600) % 24;  //计算小时数
    $branch = floor($countTime / 60) % 60;  //计算分钟数
    $branch = floor($countTime / 60) % 60;
    $second = floor($countTime % 60);
    echo '<br>';
    echo sprintf('<h3>吴限明跟袁小钧已经在一起 %d 天 %d 小时 %d 分钟 %d 秒了! </h3>', $day, $hour, $branch, $second);

  */


//正则表达式(PCRE)
/*1.定界符
     * /这是正则表达式的声明在两边声明/ .....可以是除了字母、数字、反斜线以外的任意字符作为定界符
 * 2.原子
     * 最基本的组成单元,在每个正则表达式中至少包含一个原子
     * 普通字符串a-z,A-Z,0-9;
     *特殊字符和转义后的字符:\是转义符,需要转义的字符有:  \*   \'   \"   \?  \.  \\
 * 3.非打印字符
       \r \n  \t
 *4.自定义原子表作为原子
        []:任意匹配其中的任何原子
        [abc]c:匹配其中的原子组合,ac.bc.cc
        [^]:不匹配其中的任意原子
        [^abc]c:不匹配其中的原子组合,ac.bc.cc
        []或[^]中可以写成a-z.A-Z,1-9,a-zA-Z,...混合也行
  *通用字符原子
        \d  匹配任意一个十进制数组:意思是:[0-9]
        \D  匹配任意一个非十进制数组:意思是:[^0-9]
        \s  匹配任意一个空白符,意思是:[\f\n\r\t\v]
        \S  匹配任意一个非空白符,意思是:[^\f\n\r\t\v]
        \w  匹配任意一个数字/字母/或下划线,意思是:[0-9a-zA-Z]
        \W  匹配任意一个非数字/非字母/或非下划线,意思是:[^0-9a-zA-Z]
         .  除了换行符以外地任意字符
   *元字符:同时也限定了字符串的的长度
        /^开始
        $结尾/
   *正则表达式组合
        1.          .*  代表任意字符的大范围匹配
        2.          .*?  代表任意字符的最小范围匹配
        3.          ()   另存键名,将数据单独拎出来



 */

//正则表达式实例
/*
$a = '/s/';
$a = '/sa/'; //表示有两个原子,组合为sa
$a = '/sa\//';//表示有三个原子,组合为sa和/
$a = '/abcdefg/';//表达内涵任意字符的都可以
$a = '/[abc]p/';
$a = '/[^abc]c/';
$a = '/[a-b]c/';
$a = '/[^a-b]c/';
$a = '/[^1-9]c/';
//验证的字符串
$b = 'asa/sadfac';
//进行匹配,返回匹配的次数,返回的值可能是0或1,因为函数在第一次匹配成功后终止执行
$c = preg_match($a,$b);   //preg_match()正则表达式匹配函数
var_dump($c);
*/

//正则表达式函数
/*
preg_filter	执行一个正则表达式搜索和替换
preg_grep	返回匹配模式的数组条目
preg_last_error	返回最后一个PCRE正则执行产生的错误代码
preg_match_all	执行一个全局正则表达式匹配,将文件所有的字符串全部跑一遍
preg_match	执行一个正则表达式匹配
preg_quote	转义正则表达式字符
preg_replace_callback_array	执行一个正则表达式搜索并且使用一个回调进行替换
preg_replace_callback	执行一个正则表达式搜索并且使用一个回调进行替换
preg_replace	执行一个正则表达式的搜索和替换
preg_split	通过一个正则表达式分隔字符串
*/


//正则表达式元字符-限定开头与结尾
/*
$a = "/^\d/";  //限定开头必须为数字
$b ='a123465';
$c = preg_match($a,$b);
var_dump($c);

$a = "/^\d\d\d\d\d\d\d\w$/";  //限定结尾为数字/字母/或下划线,同时会限定字符串的总长度
$b ='1234567_';
$c = preg_match($a,$b);
var_dump($c);
*/


//正则表达式重复匹配
 /*
  *   1次或多次前面的原子的作为自己: +   示例:'/^\d+\w$/',意思是不限制长度,开始的原子是数字0-9,后面的数字也是0-9类型的,结尾是数字/字母/或下划线;
  *   0次、1次、多次前面的原子的作为自己: *
  *   0次、1次前面的原子的作为自己: ?   示例:‘/https?$/’,意思是?代表可以有,也可以没有,其中的s就是可以有,也可以没有,即http,或https;
  *
  *   限定原子出现的次数:()代表着一个大原子,也叫模式单元,它的匹配值会被单独拎出来放在键名为1中,第二个()会放在键名为2...;
  *     示例一:'/^\d{6}$/', \d代表着0-9的数字,{6}中代表数字类型能够出现6次;
  *     示例二:'/^\d{6,}$/', \d代表着0-9的数字,{6,}中代表数字类型出现不少于6次;
  *     示例三:'/^\d{6,9}$/' , \d代表着0-9的数字,{6,9}中代表数字类型最少出现6次,最多出现9次;
  *     示例四:'/^a|b$/' ,  只要是a开头或者是b结尾的都可以匹配
  *     示例五:'/^(a|b)$/' ,  只要是a或者b开头的或结尾的都可以匹配
  */


//模式(大原子)修正符:
/*
    i:不区分大小写;  示例:'/^abc$/i';
    s 元字符 帮助.不能匹配换行符(\n)的特点   示例:'/^.*?/s';
    m  将字符串视为多行进行匹配   示例:'/^abc$/m';
    x  将模式(大原子)匹配中空白忽略不计   示例:'/^a          b   c$/x';
    U  取最小范围的匹配值            示例:'/<.*>/U';
    u  识别UTF-8字符编码
*/


//php文件系统

//文件的操作模式
/*
r	只读。在文件的开头开始。
r+	读/写。在文件的开头开始。
w	只写。打开并清空文件的内容;如果文件不存在,则创建新文件。
w+	读/写。打开并清空文件的内容;如果文件不存在,则创建新文件。
a	追加。打开并向文件末尾进行写操作,如果文件不存在,则创建新文件。
a+	读/追加。通过向文件末尾写内容,来保持文件内容。
x	只写。创建新文件。如果文件已存在,则返回 FALSE 和一个错误。
x+	读/写。创建新文件。如果文件已存在,则返回 FALSE 和一个错误。
*/

//文件函数
/*
basename()	返回路径中的文件名部分。
chgrp()	改变文件组。
chmod()	改变文件模式。
chown()	改变文件所有者。
clearstatcache()	清除文件状态缓存。
copy()	复制文件。
delete()	参见 unlink() 或 unset()
dirname()	返回路径中的目录名称部分。
disk_free_space()	返回目录的可用空间。
disk_total_space()	返回一个目录的磁盘总容量。
diskfreespace()	disk_free_space() 的别名。
fclose()	关闭打开的文件。
feof()	测试文件指针是否到了文件末尾。
fflush()	向打开的文件刷新缓冲输出。
fgetc()	从打开的文件中返回字符。
fgetcsv()	从打开的文件中解析一行,校验 CSV 字段。
fgets()	从打开的文件中返回一行。
fgetss()	从打开的文件中返回一行,并过滤掉 HTML 和 PHP 标签。
file()	把文件读入一个数组中。
file_exists()	检查文件或目录是否存在。
file_get_contents()	把文件读入字符串。
file_put_contents()	把字符串写入文件。
fileatime()	返回文件的上次访问时间。
filectime()	返回文件的上次修改时间。
filegroup()	返回文件的组 ID。
fileinode()	返回文件的 inode 编号。
filemtime()	返回文件内容的上次修改时间。
fileowner()	返回文件的用户 ID (所有者)。
fileperms()	返回文件的权限。
filesize()	返回文件大小。
filetype()	返回文件类型。
flock()	锁定或释放文件。
fnmatch()	根据指定的模式来匹配文件名或字符串。
fopen()	打开一个文件或 URL。
fpassthru()	从打开的文件中读数据,直到文件末尾(EOF),并向输出缓冲写结果。
fputcsv()	把行格式化为 CSV 并写入一个打开的文件中。
fputs()	fwrite() 的别名。
fread()	读取打开的文件。
fscanf()	根据指定的格式对输入进行解析。
fseek()	在打开的文件中定位。
fstat()	返回关于一个打开的文件的信息。
ftell()	返回在打开文件中的当前位置。
ftruncate()	把打开文件截断到指定的长度。
fwrite()	写入打开的文件。
glob()	返回一个包含匹配指定模式的文件名/目录的数组。
is_dir()	判断文件是否是一个目录。
is_executable()	判断文件是否可执行。
is_file()	判断文件是否是常规的文件。
is_link()	判断文件是否是连接。
is_readable()	判断文件是否可读。
is_uploaded_file()	判断文件是否是通过 HTTP POST 上传的。
is_writable()	判断文件是否可写。
is_writeable()	is_writable() 的别名。
lchgrp()	改变符号连接的组所有权。
lchown()	改变符号连接的用户所有权。
link()	创建一个硬连接。
linkinfo()	返回有关一个硬连接的信息。
lstat()	返回关于文件或符号连接的信息。
mkdir()	创建目录。
move_uploaded_file()	把上传的文件移动到新位置。
parse_ini_file()	解析一个配置文件。
parse_ini_string()	解析一个配置字符串。
pathinfo()	返回关于文件路径的信息。
pclose()	关闭由 popen() 打开的进程。
popen()	打开一个进程。
readfile()	读取一个文件,并写入到输出缓冲。
readlink()	返回符号连接的目标。
realpath()	返回绝对路径名。
realpath_cache_get()	返回高速缓存条目。
realpath_cache_size()	返回高速缓存大小。
rename()	重命名文件或目录。
rewind()	倒回文件指针的位置。
rmdir()	删除空的目录。
set_file_buffer()	设置已打开文件的缓冲大小。
stat()	返回关于文件的信息。
symlink()	创建符号连接。
tempnam()	创建唯一的临时文件。
tmpfile()	创建唯一的临时文件。
touch()	设置文件的访问和修改时间。
umask()	改变文件的文件权限。
unlink()	删除文件。
*/


//php操作cookie
       // setcookie(键,值,过期时间,服务端的有效路径,有效域名,false)
        // setcookie(name,value,Domain,path,Expires/max-Age,false)
/*setcookie('tracknick','%5Cu5DF4%5Cu9ECE%5Cu6E58%5Cu627F%5Cu738B%5Cu5B50','.taobao.com','/','2022-09-04T14:42:38.296Z',false);*/


//服务器保持用户回话数据的一种方法--session
//开启会话--用于登录注册--必需
session_start();
    $_SESSION['customer'] = 'wifiming';

/*    echo '<pre>';
        print_r($_SESSION);
    echo '</pre>';*/
if(isset($_SESSION['customer'])){
    echo '登录成功,您好:'.$_SESSION['customer'];
};
//释放所有的session值--退出登录
session_destroy();      //常用方式
$a = $_SESSION = [];         //非常用方法


//seesion设置详细部署方法
/*
//配置前端session(cookie)值
    //session.name = PHPSESSID;         把PHPSESSID改成自己的名字--必需

//配置session(cookie)有效时间 --单位秒
    //session.gc_maxlifetime = 1440;

//session(cookie)临时文件自动删除--垃圾文件回收机制--文件超过session.gc_maxlifetime设定的时间时,会有一定概率被删除,概率计算:session.gc_probability/session.gc_divisor;
    //session.gc_probability = 1;
    //session.gc_divisor = 1000;

//session保存路径
    //session.save_path="E:\phpstudy_pro\Extensions\tmp\tmp";

//session保存数据的保存方式
    //session.save_handler = files          示例一
    //session.save_handler = Redis          示例一
*/
  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-09-08 10:26:21  更:2021-09-08 10:27:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 1:24:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码