当前位置: 首页 > news >正文

PHP特性知识点总结

如果想观感更好看到图片,可以去我的gitbook或者github去看
github:https://github.com/kakaandhanhan/cybersecurity_knowledge_book-gitbook.22kaka.fun
gitbook:http://22kaka.fun


description: 专门出的关于php的特性比较,后面好像也有java的特性。

🏀 PHP特性知识点总结

(1)类型转换

之前提到过的是字符串转为整型。其实php手册里面提到了各种类型的转换。先把他放在这里。

https://www.php.net/manual/zh/language.types.type-juggling.php#language.types.typecasting

我们按照php手册上的顺序来介绍,只介绍几个比较常用的。

①转化为bool

②转化为整型int

0x01:从bool转换为int

false为0,true为1

0x02:从float转换为int

向下取整(直接舍去小数位)

0x03:从string转换为int

如果 string 是 numeric(数字字符串) 或者前导数字, 则将它解析为相应的 int 值,否则将转换为零(0

数字字符串:
这只是一个字符串,其开头类似于数字字符串,后跟任何字符。但是如果含 e 的字符串转换成 int 类型时会被当做科学计数法处理, 123e456 表示 123 的 456 次方。

0x04:从null转换为int

为0

③转换为float

0x01:从string转换为float

如果 string 是 numeric(数字字符串) 或者前导数字, 则将它解析为相应的 int 值,否则将转换为零(0

0x02:其他类型转换为float

先将其他类型转换为int,再由int转换为float。(而其他类型转换为float,就在上面的②)


(2)=

== 弱类型比较, 仅要求两边变量类型转换后的值相等

=== 强类型比较, 不仅要求两个变量的值相等, 还要求变量的类型相同

同理 != 是弱类型比较, 而 !== 是强类型比较


(3)intval()函数绕过

首先我们去php手册了解这是什么东西。

intval()

获取变量的整数值。下面的base是转换的进制,默认是0

intval(mixed $value, int $base = 10): int

intval主要利用有三个。

①特性一:返回值

这个重点在非空的数组会返回1。

这里想提醒一下['']这个不是数组为空,这个数组有一个元素,元素为空元素。要是[]才是空数组

②特性二:base转化的进制

前提是base是0的时候,由value来决定。其他几个情况比较熟悉,0开头是8进制需要好好记忆一下。

③特性三:弱类型比较下的base转换开始和结束

这个是说在弱类型比较的前提下,本来在base=0的情况下,要看value的结果来判断,这个判断是从数字或者正负号开始才做转换,直到遇到非数字,或者字符串的结束符(\0)结束转换。开始我还理解错了。这句话的意思是比如我们要得到带4476的字符串,应该是4476abc这种。不然以abc4476是被转换为0的。

④不影响结果的在开头的元素

空格+(表示正号)


(4)preg_match()函数绕过

preg_match():
执行匹配正则表达式

preg_match(string $pattern,string $subject,array &$matches = null,int $flags = 0,int $offset = 0
): int|false

①特性一:传递数组

上面显示subject得是字符串,也就是说如果是数组,会返回false。

②特性二:换行符绕过

换行符这个大部分都只有一个,但是其实在做题之类的看到了两个。

1)/m

首先我们需要知道这个/m是什么

手册上太复杂了,所以我直接用自己的理解来理解吧。就是m代表multiline mode,是多行模式。这个多行模式是什么意思呢。

http://www.lryc.cn/news/298795.html

相关文章:

  • 数据库基本操作
  • 【51单片机】矩阵键盘(江科大)
  • Go语言教学(一)起源
  • 口腔助手|口腔挂号预约小程序|基于微信小程序的口腔门诊预约系统的设计与实现(源码+数据库+文档)
  • ChatGPT高效提问—prompt常见用法(续篇三)
  • IAR报错:Error[Pa045]: function “halUartInit“ has no prototype
  • C++三剑客之std::optional(一) : 使用详解
  • 网络安全漏洞管理十大度量指标
  • Swift Combine 发布者订阅者操作者 从入门到精通二
  • python 笔记:shapely(形状篇)
  • 开源的JS动画框架库介绍
  • MATLAB实现随机森林回归算法
  • 时间序列预测——BiGRU模型
  • django中实现数据库操作
  • 使用 FFmpeg 将视频转换为 GIF 动画的技巧
  • 2024春晚纸牌魔术原理----环形链表的约瑟夫问题
  • HCIA-HarmonyOS设备开发认证V2.0-轻量系统内核内存管理-静态内存
  • 什么是vite,如何使用
  • 基于大语言模型的AI Agents
  • 23种设计模式之抽象工厂模式
  • 飞天使-linux操作的一些技巧与知识点9-zabbix6.0 容器之纸飞机告警设置
  • 京东组件移动端库的使用 Nut-UI
  • 用Python来实现2024年春晚刘谦魔术
  • TestNG基础教程
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • Android 9.0 任务栏中清除掉播放器的进程,状态栏仍有音乐播放器状态问题的解决
  • 【笔记】Helm-5 Chart模板指南-13 调是模版
  • Gateway反向代理配置
  • HiveSQL——共同使用ip的用户检测问题【自关联问题】
  • 猫头虎分享已解决Bug ‍ || 修改mongodb3.0副本集用户密码遇到 BeanDefinitionParsingException