php正则表达式完全教程之精华篇

PHP正则表达式完全教程之精华篇

一、前言

正则表达式是一种可以用来描述特定模式的表达式,常被用来匹配、查找或替换特定的字符串。PHP内置支持正则表达式的相关函数,使用正则表达式可以让我们的编程工作更加高效、灵活。

本教程将从基础概念讲起,逐步介绍正则表达式的各种元字符、语法、操作函数以及实用技巧。

二、基础概念

正则表达式由普通字符和元字符组成。普通字符会直接匹配相应的字符,而元字符则表示某一类字符的组合或者某一特定字符。

以下为常见的元字符:

  • ^ 匹配字符串的开始位置。
  • $ 匹配字符串的结束位置。
  • . 匹配任意字符,除了换行符。
  • * 匹配前一个字符0次或多次。
  • + 匹配前一个字符1次或多次。
  • ? 匹配前一个字符0次或1次。
  • {n} 匹配前一个字符恰好n次。
  • {n,} 匹配前一个字符n次或多次。
  • {n,m} 匹配前一个字符n到m次。

三、操作函数

PHP提供了多个正则表达式相关的操作函数,下面主要介绍match、preg_match、preg_match_all、preg_replace和preg_split。

1. match()

match()函数只能用于匹配数字、并且仅返回第一次匹配的结果。

示例代码:

$str = "hello world 123";
if (preg_match("/\d+/", $str, $match)) {
  echo $match[0];
}

输出结果:

123

2. preg_match()

preg_match()函数则可以匹配任何字符串,仅返回第一次匹配的结果,用法和match()函数类似。

示例代码:

$str = "hello world 123";
if (preg_match("/world (\d+)/", $str, $match)) {
  echo $match[1];
}

输出结果:

123

3. preg_match_all()

与preg_match()函数不同,preg_match_all()函数返回所有匹配的结果。

示例代码:

$str = "hello 123 world 456";
if (preg_match_all("/\d+/", $str, $matches)) {
  print_r($matches);
}

输出结果:

Array
(
    [0] => Array
        (
            [0] => 123
            [1] => 456
        )

)

4. preg_replace()

preg_replace()函数用于替换匹配的字符串部分。

示例代码:

$str = "hello world 123";
echo preg_replace('/\d+/', '456', $str);

输出结果:

hello world 456

5. preg_split()

preg_split()函数用于根据正则表达式将字符串分割成数组。

示例代码:

$str = "hello 123 world 456";
print_r(preg_split('/\d+/', $str));

输出结果:

Array
(
    [0] => hello 
    [1] =>  world 
    [2] => 
)

四、实用技巧

1. 捕获组

捕获组可以使用小括号()来进行定义,可以将匹配结果中指定部分提取出来作为返回值。

示例代码:

$str = "2019-12-01";
if (preg_match('/(\d{4})-(\d{2})-(\d{2})/', $str, $match)) {
    echo $match[1]."-".$match[2]."-".$match[3];
}

输出结果:

2019-12-01

2. 贪婪模式和非贪婪模式

  • 贪婪模式:默认情况下正则表达式会尽量匹配长的字符串。
  • 非贪婪模式:使用?元字符可以实现非贪婪模式,它会尽量匹配短的字符串。

示例代码:

$str = "<div>hello</div><div>world</div>";
preg_match('/<div>(.*)<\/div>/', $str, $match1);
print_r($match1);

preg_match('/<div>(.*?)<\/div>/', $str, $match2);
print_r($match2);

输出结果:

Array
(
    [0] => <div>hello</div><div>world</div>
    [1] => hello</div><div>world
)
Array
(
    [0] => <div>hello</div>
    [1] => hello
)

五、总结

正则表达式虽然看起来有些晦涩,但实际上是一项十分实用的技能,在PHP编程中经常使用。掌握基础概念、操作函数以及实用技巧,可以让我们更加高效、准确地编写正则表达式相关代码,提高编程效率。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php正则表达式完全教程之精华篇 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • php array_flip() 删除数组重复元素

    PHP array_flip() 删除数组重复元素 PHP中的array_flip()函数可以将一个数组的键和值互相交换。如果有重复的值,会被覆盖成最后出现的那个值。这也就意味着,通过array_flip()函数处理后的数组没有重复的键值了,我们就可以通过这种方式高效的删除数组中的重复元素。 函数语法 array array_flip ( array $ar…

    PHP 2023年5月26日
    00
  • php类常量的使用详解

    PHP类常量是指在一个类中定义的不可更改的值,可以被所有类中的方法所调用,类常量使用起来比普通常量具有更高的灵活性和安全性。下面是关于PHP类常量的详细讲解及使用攻略: 声明类常量 在类主体中使用关键字 const 可以声明一个类常量,并且在定义时必须给定初始值,一旦定义后,它的值不可更改。以下是类常量的语法: class ClassName { const…

    PHP 2023年5月26日
    00
  • PHP _construct()函数讲解

    PHP _construct()函数讲解 概述 __construct()是PHP中的一个魔术方法(Magic Method)。魔术方法是PHP中的一类预定义方法,它们以双下划线开头和结尾(如__construct())。 __construct()是一个类的构造函数,当一个对象被创建时,如果在该类中定义了构造函数,则该构造函数会被自动调用。 语法 publ…

    PHP 2023年5月25日
    00
  • 控制PHP的输出:缓存并压缩动态页面

    控制PHP的输出是提高网站性能的一种方法,缓存并压缩动态页面能够有效减少服务器响应时间,提升用户体验。以下是控制PHP输出的完整攻略: 开启输出缓存 通过ob_start()函数开启输出缓存,将所有后续的程序输出缓存到内存中,直到调用ob_flush()函数或程序结束时才输出页面。代码示例: <?php ob_start(); // 开启输出缓存 //…

    PHP 2023年5月26日
    00
  • php 备份数据库代码(生成word,excel,json,xml,sql)

    下面将详细讲解“PHP备份数据库代码(生成Word,Excel,JSON,XML,SQL)”的完整攻略。这个攻略包含以下几个部分: 连接数据库 获取数据表信息 生成SQL脚本备份 生成Excel备份 生成Word备份 生成JSON备份 生成XML备份 第一步,连接数据库。连接数据库是备份操作的第一步。要连接数据库,需要使用PHP内置的mysqli或PDO扩展…

    PHP 2023年5月26日
    00
  • php获取指定数量随机字符串的方法

    要获取指定数量的随机字符串,可以借助PHP内置的函数来实现。下面是一些获取随机字符串的方法,供参考。 使用rand函数 rand函数可以生成指定范围内的随机数,我们可以利用它来生成随机字符串。具体实现步骤如下: 定义可用于生成随机字符串的字符集合 $chars = ‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRST…

    PHP 2023年5月26日
    00
  • php中3种方法统计字符串中每种字符的个数并排序

    以下是PHP中三种方法统计字符串中每种字符的个数并排序的攻略: 方法一:使用for循环逐一判断并统计字符个数 <?php $str = "hello world"; $result = array(); for ($i = 0; $i < strlen($str); $i++) { $char = $str[$i]; if (…

    PHP 2023年5月26日
    00
  • Laravel 5框架学习之向视图传送数据(进阶篇)

    Laravel是一种流行的PHP Web开发框架。使用Laravel可以高效地构建Web应用程序。 在Laravel中,视图是展示数据的一种方法。在此处,我们将讲解一些向视图传递数据的方法。 1.使用数组向视图传递数据 使用Laravel向视图传递数据的最基本方法是将数据存储在数组中,然后将该数组传递给视图。以下是一个简单的示例,展示如何向视图传递数组: p…

    PHP 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部