下面是对于“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半小时精通正则表达式 - Python技术站