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 正则匹配小括号内容的问题

目标:匹配jpg和png格式的图片。并且只匹配一次就好。

含有图片地址的字符串如下:

$str = string(156) "a:3:{i:0;s:38:"uploads/image/20210907/1631007647.jpg,";i:1;s:38:"uploads/image/20210907/1631016620.jpg,";i:2;s:38:"uploads/image/20210907/1631014044.jpg,";}"

第一种:使用(jpg|png)来选择匹配图片格式

preg_match_all("#uploads/image/[0-9]+\/[0-9]+\.(jpg|png)#", $str, $match);

  $i = 1;
  foreach ($match as $item1) {
    echo "{$item1}<br>";
    foreach ($item1 as $item_i) {
      echo "{$item_i}----{$i}<br>";
      $i++;
    }
  }

##备注:
1.定界符我是用#,使用“/”做定界符时,汇报错的。
2、preg_match_all:一直匹配到字符串的最后。
2、preg_match: 只匹配一次就停止后面的匹配了。

匹配结果如下:匹配了一次整体结果后。又匹配了一次小括号(jpg|png)的内容了。

Array
uploads/image/20210907/1631007647.jpg----1
uploads/image/20210907/1631016620.jpg----2
uploads/image/20210907/1631014044.jpg----3
Array
jpg----4
jpg----5
jpg----6

第二种:使用 【jpg|png】来选择匹配图片格式

注意:这里时候两个【】来匹配 jpg和png前面两个不同的字符,且对应位置。

preg_match_all("#uploads/image/[0-9]+\/[0-9]+\.[j|p][p|n]g#", $row['picarr'], $match);
  
  $i = 1;
  foreach ($match as $item1) {
    echo "{$item1}<br>";
    foreach ($item1 as $item_i) {
      echo "{$item_i}----{$i}<br>";
      $i++;
    }
  }

匹配结果如下:我们看到结果就不会匹配第二次了。

Array
uploads/image/20210907/1631007647.jpg----1
uploads/image/20210907/1631016620.jpg----2
uploads/image/20210907/1631014044.jpg----3

综上得知:

1、使用(jpg|【png)匹配。由于()会把小括号的内容当成了一个单独的组。因此在匹配完外面整体之后,再对这个分组进行二次匹配。

2、使用【】匹配。一个【】,只能匹配【】中的一个字符。因此匹配两个不同字符时,需要使用两个【】。

知识补充:

一、括号字符()的作用:

(1)第一个作用就是可以改变限定符的作用范围,如“|”、“*”、“^”等。

(2)第二个作用就是分组,也就是子表达式。如 (\.[0-9]{1,3}){2},就是对分组(\.[0-9]{1,3})进行重复匹配操作。

二、中括号【】的作用:

教材中这个括号是字符类。只要匹配的字符出现在方括号内,即可表示匹配成功。但是一个方括号只能匹配一个字符。因此在在匹配jpg和png三个字符时,需要使用两个【】来匹配前面两个不同的字符。第三个字符都是相同的“g”

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-09-10 10:38:00  更:2021-09-10 10:39:50 
 
开发: 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年12日历 -2024/12/29 18:34:08-

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