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

php函数 二

一 字符串包含

1.1 str_starts_with(string $haystack, string $needle)

php8版本中新函数。

检查字符串是否以指定子串开头,区分大小写。返回布尔值。

$haystack待判断的字符串,$needle需要查询的内容。

function test1() {$str = "Qwe asd zxc 123";if (str_starts_with($str, '')) {echo __LINE__ . PHP_EOL; //5}if (str_starts_with($str, 'Qwe')) {echo __LINE__ . PHP_EOL; //8}if (str_starts_with($str, 'qwe')) {echo __LINE__ . PHP_EOL; //11}
}
test1();

 测试结果

5
8

1.2 str_ends_with(string $haystack, string $needle)

php8版本中新函数。

检查字符串是否以指定子串结尾。返回布尔值。区分大小写。

$haystack待判断的字符串,$needle需要查询的内容。

function test3() {$str = "Qwe asd zxc 123 z";var_dump(str_ends_with($str, "Z"));var_dump(str_ends_with($str, "z"));var_dump(str_ends_with($str, "q"));var_dump(str_ends_with($str, "123"));
}
test3();

 测试结果

bool(false)
bool(true)
bool(false)
bool(false)

1.3 strstr(string $haystack, string $needle, bool $before_needle = false)

查找字符串的首次出现。返回字符串或布尔值。区分大小写。

1.4 stristr(string $haystack, string $needle, bool $before_needle = false)

strstr()函数的忽略大小写版本。

function test4() {$str = "Qwe asd zxc 123 z";var_dump(strstr($str, "Qwe"));var_dump(strstr($str, "we"));var_dump(strstr($str, "we", true));var_dump(strstr($str, "q"));var_dump(stristr($str, "q"));
}
test4();

 测试结果

string(17) "Qwe asd zxc 123 z"
string(16) "we asd zxc 123 z"
string(1) "Q"
bool(false)
string(17) "Qwe asd zxc 123 z"

1.5 strpos(string $haystack, string $needle, int $offset = 0)

查找字符串首次出现的位置。计算从零开始,也就是返回1,代表字符串中第二个位置;偏移到字符串第二个字符,偏移量是2。区分大小写。返回整数或者布尔值。

第一个字符返回值为0,应该使用0===$value判断。不存在返回false,应该使用false===$value判断。

$offset 为偏移量。

1.6 stripos(string $haystack, string $needle, int $offset = 0)

strpos()函数的忽略大小写版本。

function test5() {$str = "Qwe asd zxc 123 we";var_dump(strpos($str, "Qwe"));var_dump(strpos($str, "we"));var_dump(strpos($str, "we", 2));var_dump(strpos($str, "q"));var_dump(stripos($str, "WE"));
}
test5();

 测试结果

int(0)
int(1)
int(16)
bool(false)
int(1)

1.7 strpbrk(string $string, string $characters)

在字符串中查找一组字符的任何一个字符。

返回以找到的字符开始的子字符串。如果没有找到,则返回 false

$string 在string中查找characters字符串。

$characters 要查询的内容。区分大小写。

function test7() {$str = "Qwe asd zxc 123 we";$info = strpbrk($str, 'a');var_dump($info);$info = strpbrk($str, 'A');var_dump($info);
}
test7();

 测试结果

string(14) "asd zxc 123 we"
bool(false)

1.8 preg_match()

执行匹配正则表达式。匹配到返回1,未匹配到返回0或者false。

参数

  1. $pattern 正则表达式
  2. $subject 需验证的字符串。 避免使用substr()。
  3. &$matches 匹配结果
  4. $flags  偏移量
  5. $offset 开始搜索位置

$flags说明

  1. PREG_OFFSET_CAPTURE 附加偏移量
  2. PREG_UNMATCHED_AS_NULL 使用该标记,未匹配的子组会报告为 null;未使用时,报告为空的 string。
function test8() {$str = "Qwe asd zxc 123 we";$pattern = '/(?<=d).*(?=w)/';$result = preg_match($pattern, $str, $info, PREG_OFFSET_CAPTURE);var_dump($result);var_dump($info);$result = preg_match($pattern, $str, $info, PREG_OFFSET_CAPTURE, 8);var_dump($result);var_dump($info);
}
test8();

 测试结果

int(1)
array(1) {[0]=>array(2) {[0]=>string(9) " zxc 123 "[1]=>int(7)}
}
int(0)
array(0) {
}

1.9 str_word_count(string $string, int $format = 0, ?string $characters = null)

返回字符串中单词的使用情况。返回数组或整数

如果指定了 format 参数,返回值将是一个数组,数组的内容则取决于 format 参数。

$format

  1. 0 返回单词数量
  2. 1 返回一个包含 string 中全部单词的数组
  3. 2 返回关联数组。数组的键是单词在 string 中出现的数值位置,数组的值是这个单词

$characters 附加的字符串列表,其中的字符将被视为单词的一部分。

function test9() {$str = "Qwe asd zxc 123 we";$info = str_word_count($str);var_dump($info);$info = str_word_count($str, 1);var_dump($info);$info = str_word_count($str, 0, "123456^ ^");var_dump($info);$info = str_word_count($str, 1, "123456^ ^");var_dump($info);$info = str_word_count($str, 2, "123456^ ^");var_dump($info);
}
test9();

测试结果

int(4)
array(4) {[0]=>string(3) "Qwe"[1]=>string(3) "asd"[2]=>string(3) "zxc"[3]=>string(2) "we"
}
int(1)
array(1) {[0]=>string(18) "Qwe asd zxc 123 we"
}
array(1) {[0]=>string(18) "Qwe asd zxc 123 we"
}

 被操作的字符串中数字会被过滤掉,除非在$characters中添加数字或需最为单词的字符。

没发现$format 设置为1或2中区别。

二 字符串分割

2.1 explode(string $separator, string $string, int $limit = PHP_INT_MAX)

使用一个字符串分割另一个字符串。

$separator 分隔符

$string 字符串

$limit 限制数量。

  1. 正数返回从0开始的指定长度内容,最后一个值为字符串剩余部分。
  2. 负数返回从末尾开始倒数的内容,直到数组开始,和substr长度的设置一个原理。
  3. 传0视为1,返回包含整个字符串的数组。
  4. 默认为内置常量PHP_INT_MAX,最大整数。
  5. 无对应内容,返回包含整个字符串的数组。
function test6() {$str = "Qwe asd zxc 123 we";$arr2 = explode("W", $str);var_dump($arr2);$arr3 = explode(" ", $str, -2);var_dump($arr3);$arr1 = explode(" ", $str, 0);var_dump($arr1);$arr4 = explode(" ", $str, 1);var_dump($arr4);$arr5 = explode(" ", $str, 2);var_dump($arr5);
}
test6();

 测试结果

array(1) {[0]=>string(18) "Qwe asd zxc 123 we"
}
array(3) {[0]=>string(3) "Qwe"[1]=>string(3) "asd"[2]=>string(3) "zxc"
}
array(1) {[0]=>string(18) "Qwe asd zxc 123 we"
}
array(1) {[0]=>string(18) "Qwe asd zxc 123 we"
}
array(2) {[0]=>string(3) "Qwe"[1]=>string(14) "asd zxc 123 we"
}

2.2 substr(string $string, int $offset, ?int $length = null)

返回字符串字串。字符串长度小于偏移量返回空字符串。

$offset 偏移量。

  1. 为正数从0开始计算。
  2. 为负从尾开始计算,倒数指定的偏移量开始计算指定长度。

$length 指定长度。

  1. 为正数offset 处开始最多包括 length 个字符。最多返回到字符串结尾,即length大于字符串长度,返回到字符串结尾的长度。
  2. 为0,返回空字符串
  3. 为null返回整个字符串
  4. 为负,那么 string 末尾处的 length 个字符将会被省略。若 offset 是负数则从字符串尾部算起。如果 offset 不在这段文本中,那么将返回空字符串。
function test10() {$str = "Qwe asd zxc 123 we";$info = substr($str, 2);var_dump($info);$info = substr($str, 2, 2);var_dump($info);$info = substr($str, 2, 20);var_dump($info);$info = substr($str, -10, 2);var_dump($info);$info = substr($str, -10, 20);var_dump($info);$info = substr($str, 0);var_dump($info);
}
test10();

测试结果

string(16) "e asd zxc 123 we"
string(2) "e "
string(16) "e asd zxc 123 we"
string(2) "zx"
string(10) "zxc 123 we"
string(18) "Qwe asd zxc 123 we"

2.3 substr_count(string $haystack,string $needle,int $offset = 0,?int $length = null)

计算字串出现的次数。该函数返回 int。

$haystack中查找$needle字符串。

$offset 偏移量。开始计数的偏移位置。如果是负数,就从字符的末尾开始统计。

$length 指定偏移位置之后的最大搜索长度。如果偏移量加上这个长度的和大于 haystack 的总长度,则打印警告信息。 负数的长度 length 是从 haystack 的末尾开始统计的。

function test11() {$str = "Qwe asd zxc 123 we";try{$info = substr_count($str, " ", 5, 5);var_dump($info);} catch (\Throwable $e) {var_dump($e->getTraceAsString());}try{$info = substr_count($str, " ", 5, 100);var_dump($info);} catch (\Throwable $e) {var_dump($e->getTraceAsString());}try{$info = substr_count($str, " ", -5, 5);var_dump($info);} catch (\Throwable $e) {var_dump($e->getTraceAsString());}try{$info = substr_count($str, " ", -5, 100);var_dump($info);} catch (\Throwable $e) {var_dump($e->getTraceAsString());}
}
test11();

测试结果

int(1)
string(117) "#0 D:\workspace\php\test\test12.php(130): substr_count()
#1 D:\workspace\php\test\test12.php(150): test11()
#2 {main}"
int(1)
string(117) "#0 D:\workspace\php\test\test12.php(144): substr_count()
#1 D:\workspace\php\test\test12.php(150): test11()
#2 {main}"

我本地php8版本,cache(\Exception $e){} 捕获不到异常……


 

相关文章:

php函数 二

一 字符串包含 1.1 str_starts_with(string $haystack, string $needle) php8版本中新函数。 检查字符串是否以指定子串开头&#xff0c;区分大小写。返回布尔值。 $haystack待判断的字符串&#xff0c;$needle需要查询的内容。 function test1() {$str "Qwe asd zx…...

IDC机房交换机核心技术与应用指南

IDC机房交换机核心技术与应用指南 ​ 在这个快速发展的数字时代&#xff0c;数据中心作为信息技术的心脏&#xff0c;不仅承载着海量数据的处理、存储和传输&#xff0c;更是支撑着全球企业运营和互联网服务的关键基础设施。在众多构成数据中心的组件中&#xff0c;IDC机房交换…...

Compose | UI组件(五) | Button 按钮组件

文章目录 前言Button 是什么&#xff1f;Button的创建Button显示水平方向的UI IconButton是什么&#xff1f;IconButton是创建 FloatingActionButton是什么&#xff1f;FloatingActionButton创建 ExtendedFloatingActionButton是什么&#xff1f; 总结 前言 随着移动端的技术不…...

【leetcode刷刷】235. 二叉搜索树的最近公共祖先 、701.二叉搜索树中的插入操作 、450.删除二叉搜索树中的节点

235. 二叉搜索树的最近公共祖先 class Solution:def lowestCommonAncestor(self, root: TreeNode, p: TreeNode, q: TreeNode) -> TreeNode:# 递归if not root: return if root.val p.val: return pif root.val q.val: return qleft Noneright Noneif root.val > p.…...

YoloV8改进策略:BackBone改进|DCNv4最新实践|高效涨点|多种改进教程|完整论文翻译

摘要 涨点效果:在我自己的数据集上,mAP50 由0.986涨到了0.993,mAP50-95由0.737涨到0.77,涨点明显! DCNv4是可变形卷积的第四版,速度和v3相比有了大幅度的提升,但是环境搭建有一定的难度,对新手不太友好。如果在使用过程遇到编译的问题,请严格按照我写的环境配置。 …...

高中数学常识

一、大小关系 |x| > |sinx| 理由&#xff1a; 很明显&#xff0c;在圆内&#xff0c;弧长x>垂线sinx 3x、2x 、 1 2 \frac{1}{2} 21​x 理由&#xff1a; log 1 2 _\frac{1}{2} 21​​x、log 2 _2 2​x、 log 3 _3 3​x 二、(xy)? 的求法 利用二项式定理 三、平…...

docker之部署青龙面板

青龙面板是一个用于管理和监控 Linux 服务器的工具&#xff0c;具有定时运行脚本任务的功能。在实际情况下也可以用于一些定期自动签到等任务脚本的运行。 本次记录下简单的安装与使用&#xff0c;请提前安装好docker&#xff0c;参考之前的文章。 一、安装部署 1、拉取镜像 # …...

Type-C平板接口协议芯片介绍,实现单C口充放电功能

在现代平板电脑中&#xff0c;Type-C接口已经成为了一个非常常见的接口类型。相比于传统的USB接口&#xff0c;Type-C接口具有更小的体积、更快的传输速度和更方便的插拔体验。但是&#xff0c;在使用Type-C接口的平板电脑上&#xff0c;如何实现单C口充电、放电和USB2.0数据传…...

系统架构演变

1.1系统架构的演变 2008年以后&#xff0c;国内互联网行业飞速发展&#xff0c;我们对软件系统的需求已经不再是过去”能用就行”这种很low的档次了&#xff0c;像抢红包、双十一这样的活动不断逼迫我们去突破软件系统的性能上限&#xff0c;传统的IT企业”能用就行”的开发思…...

Oracle PL/SQL Programming 第2章:Creating and Running PL/SQL Code 读书笔记

总的目录和进度&#xff0c;请参见开始读 Oracle PL/SQL Programming 第6版 暂不考虑系统设计或单元测试之类的任务&#xff0c;所有 PL/SQL 程序员必须熟悉的基本操作任务包括&#xff1a; 浏览数据库创建和编辑 PL/SQL 源代码编译 PL/SQL 源代码&#xff0c;并更正编译器注…...

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Swiper容器组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之Swiper容器组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、Swiper容器组件 滑块视图容器&#xff0c;提供子组件滑动轮播显示的能力。…...

『建议收藏』OpenAI官方出的Prompt提示词教程中文版来了!

一些结论 六大策略: 写清晰的指令 提供参考文本 将复杂任务分解为更简单的子任务 给模型时间“思考” 使用外部工具 系统性测试变化 提高结果质量的六大策略 写清晰的指令 这些模型无法读懂你的想法。如果输出过长&#xff0c;要求简短回复&#xff1b;如果输出过于简单…...

牛刀小试 - C++ 推箱子小游戏

参考文档 C笔记&#xff1a;推箱子小游戏 copy函数 memcpy()函数用法&#xff08;可复制数组&#xff09; 使用memcpy踩出来的坑&#xff0c;值得注意 完整代码 /********************************************************************* 程序名:推箱子小游戏 说明&#x…...

手机视频压缩怎么压缩?一键瘦身~

现在手机已经成为我们日常生活中必不可少的工具&#xff0c;而在手机的应用领域中&#xff0c;文件的传输和存储是一个非常重要的问题。很多用户都会遇到这样一个问题&#xff0c;那就是在手机上存储的文件太多太大&#xff0c;导致手机存储空间不足&#xff0c;那么怎么在手机…...

目标主力能源:华为智能光伏的时代指南针

让新能源成为人类主要的能源来源&#xff0c;是实现“双碳目标”的核心方案。而光伏能源则是目前新能源体系中的主要选择之一。以光伏为核心构建新型电力系统&#xff0c;让光伏能源成为主力能源值得关注和期待。 过去几年&#xff0c;光伏能源极速发展。但如何百尺竿头更进一步…...

每日一题 力扣2846 边权重均等查询

2846. 边权重均等查询 题目描述&#xff1a; 现有一棵由 n 个节点组成的无向树&#xff0c;节点按从 0 到 n - 1 编号。给你一个整数 n 和一个长度为 n - 1 的二维整数数组 edges &#xff0c;其中 edges[i] [ui, vi, wi] 表示树中存在一条位于节点 ui 和节点 vi 之间、权重…...

【Docker】Docker学习⑨ - 单机编排之Docker Compose

【Docker】Docker学习⑨ - 单机编排之Docker Compose 一、Docker简介二、Docker安装及基础命令介绍三、Docker镜像管理四、Docker镜像与制作五、Docker数据管理六、网络部分七、Docker仓库之单机Dokcer Registry八、Docker仓库之分布式Harbor九、单机编排之Docker Compose1 基础…...

ES6笔记-symbol

ES6 symbol 是什么 ES5的对象属性名是字符串&#xff0c;这容易造成属性名的冲突。symbol是一种机制&#xff0c;保证每个属性的名字都是独一无二的。这样就从根本上防止属性名冲突。 它是一种原始数据类型Symbol,表示独一无二的值。它属于javaScript语言的原生数据类型之一。…...

C++设计模式介绍:优雅编程的艺术

物以类聚 人以群分 文章目录 简介为什么有设计模式&#xff1f; 设计模式七大原则单一职责原则&#xff08;Single Responsibility Principle - SRP&#xff09;开放封闭原则&#xff08;Open/Closed Principle - OCP&#xff09;里氏替换原则&#xff08;Liskov Substitution …...

GitLab升级版本(任意用户密码重置漏洞CVE-2023-7028)

目录 前言漏洞分析影响范围查看自己的GitLab版本升级路程 升级过程13.1.1113.8.8 - 14.0.1214.3.614.9.5 - 16.1.6 前言 最近GitLab发了个紧急漏洞需要修复&#xff0c;ok接到命令立刻着手开始修复&#xff0c;在修复之前先大概了解一下这个漏洞是什么东西 漏洞分析 1、组件…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅&#xff08;Pub/Sub&#xff09;模式与专业的 MQ&#xff08;Message Queue&#xff09;如 Kafka、RabbitMQ 进行比较&#xff0c;核心的权衡点在于&#xff1a;简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...

《C++ 模板》

目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板&#xff0c;就像一个模具&#xff0c;里面可以将不同类型的材料做成一个形状&#xff0c;其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式&#xff1a;templa…...