二、PHP函数

一、PHP函数

1.基本函数

  1. 创建数组:array(1,2,3)
  2. 数字或数字字符串检测:is_numeric检测变量是否为数字或数字字符串
$input = array('2',2,3);
echo is_numeric($input[0]);// 注意16进制的内容 如何0x12,is_numeric返回false,即不认为其是数字或数字字符
// 结果:1
  1. 生成随机数:echo rand(1,5);表示生成1-5范围内一个随机的数字

  2. 脚本睡眠:sleep(2)表示当前脚本睡眠2秒

  3. 检查变量是否已设置并且不为NULL:echo isset($input);

  4. 输出一条结束消息同时退出脚本:die('end...000');

  5. md5加解密:$name = md5('QNKCDZO');

    // 特殊情况:md5相等,但两值不相等的情况
    //解释:md5相等不是真的相等而是,例如下面240610708被md5加密,开头字符0e代表科学计算法,如果用==去比较,==将会进行自动类型转换,将其转换为0*10的462097431906509019562988736854次方=0
    QNKCDZO
    240610708 = 0e462097431906509019562988736854
    s878926199a
    s155964671a
    s214587387a
    
  6. 函数特点:当传输参数不符那个函数的返回值就会为NULL

2.正则函数

  1. 正则匹配函数:preg_match(pattern,content,result)pattern表示匹配规则,content表示需要进行正则匹配的内容,result是匹配结果(数组)

    // 注意点:"/world/i"这个i表示大写WORLD或小写world都会匹配,如果没有i就是精确匹配(比如黑名单里面有select(即服务端会去匹配用户输入是否包含select)我就可以通过SELECT绕过)
    if (preg_match("/world/i", "Hello World!", $matches)) {echo "找到匹配项!";print_r($matches);
    } else {echo "未找到匹配项!";
    }
    
  2. 过滤和替换:$out=preg_filter(pattern,content,str)pattern表示匹配规则,content表示将匹配到的内容的位置替换为何内容,str表示对哪个字符串变量进行正则替换操作,过滤后的内容会赋值给$out

    //下面的例子演示了preg_filter的语法,也展现了,写两遍()避免被过滤达到执行代码的效果
    $str='echo getcwd(());';
    $pattern = '/\(\)/';
    $replacement = '';
    echo $str;//echo getcwd(());
    echo '*';
    $out = preg_filter($pattern, $replacement,$str);
    echo $out;//echo getcwd();
    echo '**';
    echo eval($out);//C:\phpstorm\test
    

3.字符串

  1. 截取:mb_substr(字符串,开始位置,长度)

    $str = "Hello, World!";
    $substr = mb_substr($str, 0, 5);
    echo $substr; // 输出:Hello
    
  2. 字符串位置:mb_strpos(字符串,需要寻找的字符,开始的位置)

    $str = "Hello, Hello, World!";
    $position = mb_strpos($str, "Hwello", 7);
    echo $position; // 输出:13 找不到返回false
    
    1. strpos():查找字符串在另一字符串中第一次出现的位置(区分大小写,汉字占两个位置)
      //安全问题
      //解释:下面的内容heo在hello第一次出现的位置是0,就会导致0==false
      <?php
      $str1 = "hello";
      $str2 = "heo";
      if(strpos($str1,$str2)==false)
      {echo "flag";
      }
      ?>
      
  3. 替换:str_replace(需要替换的内容,替换为的内容,字符串)(区分大小写)

    //安全问题:可以通过双写或者大小写进行绕过如下例子
    $str = "Hello, worworldld!";
    //$str = "hello, WORLD"; 因为区分大小写,这个WORLD并不会被替换
    $newStr = str_replace("world", "", $str);
    echo $newStr; // 输出:Hello, world!
    

4.过滤函数

  1. html过滤
    解释:htmlspecialchars($url)本质上是为了安全,其能将以下字符进行转码(单引号不会被转码),避免xss的发生,但是htmlspecialchars不是绝对安全,还要取决与上下代码环境,如下面例子

    1. & (和号)成为 &amp;
    2. " (双引号)成为 &quot;
    3. < (小于)成为 &lt;
    4. > (大于)成为 &gt;
    // 下面点击Link将弹出XSS
    $url = 'javascript:alert("XSS")';
    echo '<a href="' . htmlspecialchars($url) . '">Link</a>';
    
  2. HTML、XML 以及 PHP 的标签过滤
    解释:strip_tags(字符串,要保留的内容)剥去字符串中的 HTML、XML 以及 PHP 的标签,第二个参数是过滤时,不删除某标签,如下例所示

    $str = "<p>This is a <a href='https://example.com'>link</a> to a website.</p>";
    $clean_str = strip_tags($str,'<p>');
    echo $clean_str;//结果:<p>This is a link to a website.</p>
    
  3. 在预定义的字符前添加反斜杠
    解释:其会在\ " '前面加入反斜杠,避免通过引号闭合,造成问题

    $str = "It's a beautiful day!";
    $escapedStr = addslashes($str);
    echo $escapedStr;//It\'s a beautiful day!
    //在上述示例中,原始字符串是 "It's a beautiful day!"。调用 addslashes 函数后,单引号被转义为 \',从而避免将其解释为字符串的结束标记
    

5.文件有关函数

  1. include:使用 include,你可以将包含其他 PHP 文件的代码插入到主文件中,从而在执行期间将这些文件和主文件合并为一个整体(多次引用会多次执行)
    a文件

    <?php$flag=123;
    ?>
    

    b文件

    <?php
    include 'a.php';
    echo $flag;//123
    ?>
    
  2. require:require 函数与 include 关键字类似,也用于将外部文件包含到当前文件中。但与 include 不同的是,当被包含的文件不存在或路径不正确时,require 会生成一个致命错误,并终止脚本的执行(多次引用也只会引用一次)

  3. highlight_file:让代码高亮显示,highlight_file(要显示的文件,返回值)

    <?php$filename = "myfile.php";$highlightedCode = highlight_file($filename, true);echo $highlightedCode;
    ?>
    
  4. file_get_contents:把整个文件读入一个字符串

    $filename = "a.txt";
    $content = file_get_contents($filename);
    echo $content;// a.txt的内容
    
  5. file:把整个文件读入一个数组,数组中的每个单元都是文件中相应的一行

    $filename = "a.txt";
    $content = file($filename);
    echo $content;
    print_r($content);
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/122092.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

『Jmeter入门万字长文』 | 从环境搭建、脚本设计、执行步骤到生成监控报告完整过程

『Jmeter入门万字长文』 | 从环境搭建、脚本设计、执行步骤到生成监控报告完整过程 1 Jmeter安装1.1 下载安装1.2 Jmeter汉化1.2.1 临时修改1.2.2 永久修改 1.3 验证环境 2 测试对象2.1 测试对象说明2.2 测试对象安装2.2.1 下载安装2.2.2 启动测试对象服务2.2.3 访问测试对象2.…

QA新人入职任务

一、背景 分享记录一下入职新公司后&#xff0c;新人第一周接到的新手任务&#xff0c;回顾总结&#xff0c;方便自己成长和思考~ 二、新人任务说明 题目1&#xff1a;接口相关 题目2&#xff1a;UI相关 UI原型图 三、任务要求 1、根据题目2原型图&#xff0c;进行UI测试…

JS递归函数详解

递归函数是一种在函数内部调用自身的编程技巧。通过不断地将问题分解为更小的子问题&#xff0c;递归函数可以处理复杂的任务&#xff0c;并提供简洁和可读性高的代码实现。 基本原理&#xff1a; 1.递归函数由两个主要部分组成&#xff1a;基准条件&#xff08;base case&…

学习笔记:Splay

​ Splay 定义 Splay 树, 或 伸展树&#xff0c;是一种平衡二叉查找树&#xff0c;它通过 Splay/伸展操作 不断将某个节点旋转到根节点&#xff0c;使得整棵树仍然满足二叉查找树的性质&#xff0c;能够在均摊 O ( log ⁡ n ) O(\log n) O(logn) 时间内完成插入&#xff0c;查…

《ATTCK视角下的红蓝对抗实战指南》一本书构建完整攻防知识体系

一. 网络安全现状趋势分析 根据中国互联网络信息中心&#xff08;CNNIC&#xff09;发布的第51次《中国互联网络发展状况统计报告》&#xff0c;截至2022年12月&#xff0c;我国网民规模为10.67亿&#xff0c;互联网普及率达75.6%。我国有潜力建设全球规模最大、应用渗透最强的…

软考系列(系统架构师)- 2009年系统架构师软考案例分析考点

试题一 软件架构设计 【问题1】&#xff08;9分&#xff09; 软件质量属性是影响软件架构设计的重要因素。请用200字以内的文字列举六种不同的软件质量属性名称并解释其含义。 常见的软件质量属性有多种&#xff0c;例如性能&#xff08;Performance)、可用性&#xff08;Ava…

贪吃蛇-c语言版本

目录 前言 贪吃蛇游戏设计与分析 设计目标&#xff1a; 设计思想&#xff1a; 坐标问题&#xff1a; 字符问题&#xff1a; 小拓展&#xff1a;C语⾔的国际化特性 本地化头文件&#xff1a; 类项 setlocale函数&#xff1a; 宽字符打印&#xff1a; 地图坐标: &am…

JAVA中的垃圾回收器(1)

一)垃圾回收器概述: 1.1)按照线程数来区分: 串行回收指的是在同一时间端内只允许有一个CPU用于执行垃圾回收操作&#xff0c;此时工作线程被暂停&#xff0c;直至垃圾回收工作结束&#xff0c;在诸如单CPU处理器或者较小的应用内存等硬件平台不是特别优越的场合&#xff0c;出行…

Kafka KRaft模式探索

1.概述 Kafka是一种高吞吐量的分布式发布订阅消息系统&#xff0c;它可以处理消费者在网站中的所有动作流数据。其核心组件包含Producer、Broker、Consumer&#xff0c;以及依赖的Zookeeper集群。其中Zookeeper集群是Kafka用来负责集群元数据的管理、控制器的选举等。 2.内容…

python爬虫request和BeautifulSoup使用

request使用 1.安装request pip install request2.引入库 import requests3.编写代码 发送请求 我们通过以下代码可以打开豆瓣top250的网站 response requests.get(f"https://movie.douban.com/top250"&#xff09;但因为该网站加入了反爬机制&#xff0c;所以…

非遗主题网站的设计与实现基于PHP实现

包括源码参考论文 下载地址: https://juzhendongli.store/commodity/details/18

Linux Centos7安装后,无法查询到IP地址,无ens0,只有lo和ens33的解决方案

文章目录 前言1 查看network-scripts目录2 创建并配置 ifcfg-ens33 文件3 禁用NetworkManager4 重新启动网络服务总结 前言 在VMware中&#xff0c;安装Linux centos7操作系统后&#xff0c;想查询本机的IP地址&#xff0c;执行ifconfig命令 ifconfig结果如下&#xff1a; 结…

【Linux】权限完结

个人主页点击直达&#xff1a;小白不是程序媛 系列专栏&#xff1a;Linux被操作记 目录 前言 chown指令 chgrp指令 文件类型 file指令 目录的权限 粘滞位 umask指令 权限总结 前言 上篇文章我们说到对于一个文件所属者和所属组都是同一个人时&#xff0c;使用所属者身…

【NLP】word复制指定内容到新的word文档

目录 1.python代码 2.结果 需求&#xff1a; 复制word文档里的两个关键字&#xff08;例如“起始位置”到“结束位置”&#xff09;之间的内容到新的word文档。 前提&#xff1a;安装win32包&#xff0c;通过pip install pywin32命令直接安装。话不多说&#xff0c;直接上代码…

Debezium系列之:在K8s集群中部署Debezium Operator运行Debezium Server的详细步骤

Debezium系列之:在K8s集群中部署Debezium Operator运行Debezium Server的详细步骤 一、背景二、目标三、准备环境四、运行本地 Kubernetes 集群五、认识K8s集群部署工具kind六、认识Kubernetes Operator六、安装docker七、安装kind八、安装kubectl九、使用kind创建k8s集群十、…

JS条件表达式

在JavaScript中&#xff0c;条件表达式用于根据不同的条件来执行不同的操作。条件表达式通常与控制流语句&#xff08;如if语句、switch语句&#xff09;一起使用。以下是几种常见的JavaScript条件表达式&#xff1a; 相等比较&#xff1a;使用或比较运算符进行相等比较。会进行…

RSA:基于小加密指数的攻击方式与思维技巧

目录 目录 目录 零、前言 一、小加密指数爆破 [FSCTF]RSA签到 思路&#xff1a; 二、基于小加密指数的有限域开根 [NCTF 2019]easyRSA 思路&#xff1a; 三、基于小加密指数的CRT [0CTF 2016] rsa 思路&#xff1a; 零、前言 最近&#xff0c;发现自己做题思路比较…

设计模式之桥梁模式

什么是桥梁模式 桥梁模式&#xff08;Bridge Pattern&#xff09;也称为桥接模式&#xff0c;属于结构型模式&#xff0c;它主要目的是通过组合的方式建立两个类之间的联系&#xff0c;而不是继承。桥梁模式将抽象部分与它的具体实现部分分离&#xff0c;使它们都可以独立地变…

GnuTLS recv error (-110): The TLS connection was non-properly terminated

ubuntu git下载提示 GnuTLS recv error (-110): The TLS connection was non-properly terminated解决方法 git config --global --unset http.https://github.com.proxy

Day13力扣打卡

打卡记录 奖励最顶尖的 k 名学生(哈希表排序) 用哈希表对所有的positive与negative词条进行映射&#xff0c;然后遍历求解。tip&#xff1a;常用的分割字符串的操作&#xff1a;1.stringstream配合getline() [格式buf, string, char]2.string.find()[find未找到目标会返回npos…