PHP处理字符串

一:字符串分割成数组

日常工作中,如果需要把一个字符串分割成数组,我们一般使用 explode() 函数对字符串进行分割,具体代码如下所示:

<?php$str = 'PHP|python|java|js|css|html';
$arr = explode('|',$str);
print_r($arr);

参数一:匹配分割的字符

参数二:待分割的字符串

参数三:匹配的次数。默认一致匹配到最后一个

打印的结果如下:

Array
([0] => PHP[1] => python[2] => java[3] => js[4] => css[5] => html
)

虽然 explode() 函数很方便,但是它只支持固定的分割符,对字符串进行分割。如果需要使用正则进行匹配分割字符串,可以使用 preg_split() 函数

preg_split() 函数是通过正则表达式模式匹配分隔符的方法,实现字符串分割成数组的操作。其基本语法如下:

array preg_split ( string $pattern , string $subject [, int $limit = -1 [, int $flags = 0 ]] )

参数一:正则表达式

参数二:待匹配的字符串

参数三:匹配的次数。默认-1,表示匹配到最后一个

参数四:特殊参数。以位或运算 | 组合。PREG_SPLIT_NO_EMPTY:仅返回分隔后的非空部分

返回值:匹配的次数。如果没有匹配到返回0

如果不是很了解的可以先看看下方案例:

<?php$str = '[PHP|python|java]-[js|css|html]';
$arr = preg_split('/[\[\]|,-]/',$str,-1,PREG_SPLIT_NO_EMPTY);
print_r($arr);

打印的结果和上面的 explode() 函数一模一样,但是它所实现的功能却更加强大。

二:正则替换字符串中字符

preg_replace 函数执行一个正则表达式的搜索和替换。语法如下所示:

mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )

参数一:正则匹配规则

参数二:用于替换的字符串或字符串数组

参数三:要搜索替换的目标字符串或字符串数组

参数四:可选,对于每个模式用于每个 subject 字符串的最大可替换次数。默认是-1(无限制)

参数五:可选,为替换执行的次数。(用于统计被替换的次数)

返回值:如果 subject 是一个数组, preg_replace() 返回一个数组, 其他情况下返回一个字符串。

具体表现和用法大家可以看看下方案例,将字符串$string中的PHP替换成Python:

<?php
$string = 'PHP 123, 456';
$pattern = '/(\w+) (\d+), (\d+)/i';
$replacement = 'Python $2,$3';
echo preg_replace($pattern, $replacement, $string);

注意:上述代码$replacement中的$2 和 $3 是正则$pattern 匹配的结果列表中的第二个和第三个结果值

其实可以直接简单点,直接匹配替换:

$string = 'PHP 123, 456';
echo preg_replace('/PHP/','Python',$string);
//打印结果:Python 123, 456

三:正则匹配邮箱

邮箱验证几乎是日常工作中我们必须遇到的问题,例如找回密码及重置密码等行为就可以通过邮箱来验证用户的真假。

要使用正则表达式匹配邮箱,可以使用PHP的preg函数结合邮箱的正则表达式模式。以下是一个示例代码:

<?php
$email = "example@example.com";// 正则表达式模式匹配邮箱
$pattern = '/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/';
// 使用preg函数进行匹配
if (preg_match($pattern, $email)) {echo "邮箱格式正确";
} else {echo "邮箱格式错误";
}

在上面的代码中,使用正则表达式模式/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/来匹配邮箱。这个正则表达式模式可以匹配大多数常见的邮箱格式。

正则符号含义:

^:开始符号   $ :结尾符号

正则符号有点多,不明的可以看看百度百科的正则表达式:

https://baike.baidu.com/item/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1700215

四:正则匹配手机号

正则表达式匹配手机号码,可以使用以下正则表达式模式:

$pattern = '/^1[3456789]\d{9}$/';

这个正则表达式模式匹配以1开头,第二位为3、4、5、6、7、8、9中的任意一个数字,后面跟着9个数字的手机号码。

注意:上面的匹配方式可能会匹配到虚拟手机号,如果想要排除虚拟手机号,可以自己做一个黑名单,把网上的虚拟手机号统统拉进黑名单中。

五:匹配数组中的值

上面的preg_match函数匹配的是字符串,但是PHP提供了 preg_grep 函数用于匹配数组中的值,返回匹配模式的数组条目。语法如下:

array preg_grep ( string $pattern , array $input [, int $flags = 0 ] )

参数一:正则表达式

参数二:待匹配的数组

参数三:如果设置为 PREG_GREP_INVERT,这个函数返回输入数组中与给定模式 pattern 不匹配的元素组成的数组。

返回数组中指定匹配的元素:

<?php
$array = array(1, 2, 3.4, 53, 7.9);
// 返回所有包含浮点数的元素
$fl_array = preg_grep("/^(\d+)?\.\d+$/", $array);
print_r($fl_array);

改正则函数返回的是一个数组格式,数组中是符合匹配的结果值列表。打印结果如下所示:

Array
([2] => 3.4[4] => 7.9
)

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

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

相关文章

linux的磁盘管理

Linux 提供了多种工具和技术来进行磁盘管理。下面是对 Linux 磁盘管理的详细解释&#xff1a; 磁盘和分区&#xff1a; 磁盘&#xff08;硬盘&#xff09;&#xff1a;Linux 系统中的磁盘通常是通过 SATA、SCSI、NVMe 等接口连接的物理硬盘。可以使用工具如 lsblk、fdisk、pa…

二叉平衡树

一直想深入的研究一下&#xff0c;并手写平衡二叉树的插入、删除代码。 二叉树是动态查找的典范&#xff0c;但在极限情况下&#xff0c;二叉树的查找效果等同于链表&#xff0c;而平衡二叉树可以完美的达到 log ⁡ 2 n \log_2 n log2​n。 AVL简称平衡二叉树&#xff0c;缩写…

DAPP开发【11】IPFS星际文件管理系统

IPFS&#xff08;InterPlanetary File System&#xff09;是一个点对点的分布式文件系统&#xff0c;旨在创建一个更快速、更安全和更开放的 Web。它不同于传统的 HTTP 协议&#xff0c;因为它不需要使用一个固定的地址来访问文件&#xff0c;而是通过一个基于内容寻址的系统&a…

HNU程序设计 类和对象练习(小班)

学生类Student类的设计与实现 要求: 创建一个 Student 类&#xff0c;包含公有数据成员&#xff1a;姓名&#xff08;字符串&#xff09;、学号、性别、 3 门课程成绩 ( 结构 体形式&#xff0c;属性包含课程名和分数 ) &#xff0c;以及私有属性身份证信息。 &#xff08;…

python 实现 excle读取时间序列数据并画图显示

示例&#xff1a;Excle第一列为时间&#xff0c;第二列Num为秒为单位的时间&#xff0c;第三列到第九列为观测的温度数据。第一行为标签信息&#xff0c;第二行开始是数据。 实现功能&#xff1a;以第二列秒为单位的数据为横坐标&#xff0c;纵坐标为温度&#xff0c;将第三列到…

Linux系统调试课:I2C tools调试工具

文章目录 一、如何使用I2C tools测试I2C外设1、I2C tools概述: 2、下载I2C tools源码:3、编译I2C tools源码: 4、i2cdetect 5、i2cget 6、i2cdump

Vue+ElementUI技巧分享:结合Sortablejs实现表格行拖拽

文章目录 前言准备工作示例代码代码说明1. 引入依赖和组件结构2. 组件数据和生命周期3. 实现拖拽功能4. 更新数据和服务器同步 运行效果总结 前言 在很多动态网页应用中&#xff0c;用户界面的交互性是提高用户体验的关键。在 Vue.js 中&#xff0c;结合 Element UI 和 sortab…

rust从0开始写项目-06-如何接受命令行参数clap-01

写web项目或者app等&#xff0c;必不可少的要接受参数和校验参数的准确性&#xff0c;基本也是项目开始的第一步&#xff0c;那么我们今天来看下rust提供了哪些优秀的crates 关注 vx golang技术实验室&#xff0c;获取更多golang、rust好文 Part1一、clap_v3 本来是想用structO…

【Flink on k8s】- 3 - Kubernetes 中的关键概念

目录 1、容器 VS 虚拟机 2、Kubernetes 架构 2.1 Master节点 2.2 Node 节点 3、Kubernetes 的基本对象

华为OD机试 - 分披萨(Java JS Python C)

题目描述 "吃货"和"馋嘴"两人到披萨店点了一份铁盘(圆形)披萨,并嘱咐店员将披萨按放射状切成大小相同的偶数个小块。但是粗心的服务员将披萨切成了每块大小都完全不同奇数块,且肉眼能分辨出大小。 由于两人都想吃到最多的披萨,他们商量了一个他们认…

初识树型结构与二叉树

1. 树型结构 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树&#xff08;它是根朝上&#xff0c;而叶朝下的&#xff09;&#xff0c;其物理结构如下图所示&#x…

Ubuntu 20.04 安装 mysql8 LTS

Ubuntu 20.04 安装 mysql8 LTS sudo apt-get update sudo apt-get install mysql-server mysql --version mysql Ver 8.0.35-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu)) Ubuntu20.04 是自带了 MySQL8. 几版本的&#xff0c;低于 20.04 则默认安装是 MySQL5.7.33 s…

rpm安装gitlab

1.rpm包下载 https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/ 2.进行安装 rpm -ivh gitlab-ce-15.9.7-ce.0.el7.x86_64.rpm --nodeps --force 3.配置访问地址 vim /etc/gitlab/gitlab.rb 4.重新加载配置以及重启服务 gitlab-ctl reconfiguregitlab-ctl resta…

<Linux>(极简关键、省时省力)《Linux操作系统原理分析之Linux文件管理(2)》(26)

《Linux操作系统原理分析之Linux文件管理&#xff08;2&#xff09;》&#xff08;26&#xff09; 8 Linux文件管理8.4 虚拟文件系统 VFS8.4.1 VFS 的工作原理8.4.2 VFS 超级块8.4.3VFS 的 inode 8.5 文件系统的安装与注册8.5.2 文件系统的注册 8 Linux文件管理 8.4 虚拟文件系…

HarmonyOS4.0从零开始的开发教程05 应用程序入口—UIAbility的使用

HarmonyOS&#xff08;三&#xff09;应用程序入口—UIAbility的使用 UIAbility概述 UIAbility是一种包含用户界面的应用组件&#xff0c;主要用于和用户进行交互。UIAbility也是系统调度的单元&#xff0c;为应用提供窗口在其中绘制界面。 每一个UIAbility实例&#xff0c;…

python数据分析基础

前言 2023年10月以来&#xff0c;一位在商学院就读的可爱同学遇上了一门课——python数据分析&#xff0c;并遇到了许多问题&#xff0c;找上了我&#xff0c;就此&#xff0c;我也开始了学习之路&#xff0c;虽然很浅显&#xff0c;但这些东西对部门同学来说也是受用的&#…

【XILINX】ISE chipscope出现错误 Can‘t load jre bin client jvm.dll

记录一个ISE软件使用过程中遇到的问题及解决方案。 问题 ISE chipscope出现错误 Cant load jre bin client jvm.dll C:\Xilinx\14.7\ISE_DS\ISE\bin\nt C:\Xilinx\14.7\ISE_DS\.xinstall\bin\nt C:\Xilinx\14.7\ISE_DS\.xinstall\bin\nt64 C:\Xilinx\14.7\ISE_DS\ISE\bin\nt6…

Weblogic CVE-2023-21839(metasploit版)

Step1&#xff1a;用docker搭建环境 Step2&#xff1a;docker查看映射端口 Step3&#xff1a;访问特定端口&#xff0c;然后靶标应用。 Step4&#xff1a;用metasploit进行攻击&#xff1a; 首先&#xff0c;打开metasploit&#xff0c;然后查询需要攻击的板块&#xff0…

【恶意刷券】电商中恶意刷券如何防止?

好的&#xff0c;更详细一些的解释如下&#xff1a; 1. **验证码验证** 验证码验证是防范恶意刷券的最基本手段之一。通过在关键操作前引入验证码&#xff0c;可以让机器无法进行自动化操作&#xff0c;只有真实用户才能完成验证。验证码种类包括文字、图片、计算等多种形式&…

C# 未处理System.InvalidOperationException HResult=-2146233079

1.异常信息&#xff1a; 未处理System.InvalidOperationException HResult-2146233079 MessageThe custom trace listener custom listener does not have a listener type name set or the type is invalid (F:\CBCT64\Output\Polaris.exe.Config line 45). SourceMicr…