php半小时精通正则表达式

下面是对于“php半小时精通正则表达式”的完整攻略:

下面是对于“php半小时精通正则表达式”的完整攻略:

1. 什么是正则表达式

正则表达式是一个用来表述、匹配一定规则文本的表达式。它可以用来检查一个字符串是否符合某种规则,或者从一个字符串中提取出符合某种规则的子字符串。

2. 正则表达式的语法

正则表达式语法中的基本元素主要包括:

  • 普通字符:字符是正则表达式的基本元素,使用的时候按字面的意思匹配。
  • 特殊字符:正则表达式中一些具有特殊含义的字符,需要用反斜杠转义后才能匹配。
  • 限定符:限定字符出现的数量,可以精确或是模糊匹配。
  • 分组:使用括号将一些字符分组,以便后面使用。
  • 元字符:代表着一类字符,例如\d代表数字字符,\w代表单词字符等。

3. 正则表达式的模式匹配函数

PHP 中,我们常用 preg_match 和 preg_replace 两个函数来进行正则表达式的匹配和替换。

使用 preg_match 函数进行匹配

preg_match 函数基本语法如下:

int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )

其中,$pattern 是正则表达式,$subject是要匹配的字符串,$matches 是匹配结果数组,$flags 表示匹配选项,$offset 表示开始匹配的偏移量。

例如:

<?php
$str = 'Hello, world!';
if (preg_match('/^Hello/', $str)) {
    echo '匹配成功!';
} else {
    echo '匹配失败!';
}
?>

输出结果将是:

匹配成功!

使用 preg_replace 函数进行替换

preg_replace 函数基本语法如下:

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

其中,$pattern 是正则表达式,$replacement 是要替换成的字符串(可使用 $1、$2 之类的参数代表正则表达式的子表达式),$subject 是要进行替换的字符串,$limit 表示替换的最大次数,$count 是返回替换的总数。

例如:

<?php
$str = 'A yellow bird on a high branch';
echo preg_replace('/a/i', 'o', $str);
?>

输出结果将是:

o yellow bird on o high bronch

4. 示例说明

示例一:匹配手机号码

假设我们需要匹配11位数的手机号码,那么我们可以使用如下的正则表达式:

/^1[34578]\d{9}$/

其中,^1[34578] 匹配以1开头的手机号码,后续的\d{9} 匹配后面的9个数字,$表示匹配到字符串结尾。

使用 preg_match 函数,示例代码如下:

<?php
$mobile = '13912345678';
if (preg_match('/^1[34578]\d{9}$/', $mobile)) {
    echo '匹配成功!';
} else {
    echo '匹配失败!';
}
?>

输出结果将是:

匹配成功!

示例二:替换 URL 中的中文字符

假设我们需要在 URL 中替换掉中文字符,那么我们可以使用如下的正则表达式:

/[\x{4e00}-\x{9fa5}]+/u

其中,[\x{4e00}-\x{9fa5}]代表匹配所有中文字符,+代表匹配多个中文字符,u修饰符表示按Unicode字符进行匹配。

使用 preg_replace 函数,示例代码如下:

<?php
$url = 'http://www.example.com/这是一个测试.html';
echo preg_replace('/[\x{4e00}-\x{9fa5}]+/u', '', $url);
?>

输出结果将是:

http://www.example.com/.html

本文标题为:php半小时精通正则表达式

基础教程推荐