📅  最后修改于: 2023-12-03 15:03:44.220000             🧑  作者: Mango
PHP 正则表达式是一种强大的工具,用于在文本中搜索和匹配指定的字符串模式。在本文中,我们将介绍 PHP 正则表达式的基础知识。
PHP 正则表达式是一个模式,根据该模式匹配字符串。模式可以包括普通字符和特殊字符。普通字符匹配其本身,而特殊字符用于具有特殊含义的目的。
在 PHP 中,有几个函数用于使用和操作正则表达式,包括:
preg_match()
:在字符串中搜索匹配给定正则表达式的第一个出现位置。preg_match_all()
:在字符串中搜索匹配给定正则表达式的所有出现位置。preg_replace()
:搜索字符串中与正则表达式匹配的内容,并用新字符串替换匹配到的内容。preg_split()
:使用正则表达式分隔字符串。正则表达式中的特殊字符称为元字符。以下是 PHP 正则表达式中的一些元字符:
| 元字符 | 描述 |
| ------------ | ------------------------------------------------------------ |
| ^ | 匹配输入字符串的开始位置。 |
| $ | 匹配输入字符串的结束位置。 |
| . | 匹配除换行符之外的任意字符。如果希望匹配包括换行符的任意字符,请使用 s 标记。 |
| * | 匹配前面的子表达式零次或多次。 |
| + | 匹配前面的子表达式一次或多次。 |
| ? | 匹配前面的子表达式零次或一次。 |
| {n} | 匹配前面的子表达式恰好 n 次。 |
| {n,} | 匹配前面的子表达式至少 n 次。 |
| {n,m} | 匹配前面的子表达式至少 n 次,但不超过 m 次。 |
| [...] | 匹配方括号中包含的任意字符。 |
| [^...] | 匹配方括号中未包含的任意字符。 |
| \ | 转义字符,用于匹配元字符。 |
| | | 或运算符,匹配操作符左右两边任意一个表达式。 |
| (...) | 捕获子表达式。我们可以使用 preg_match()
函数来从匹配到的字符串中提取子表达式。 |
| (?:...) | 匹配子表达式,但不捕获该匹配项。 |
| (?=...) | 正向预查,匹配后面符合某个表达式的字符串。 |
| (?!...) | 负向预查,匹配后面不符合某个表达式的字符串。 |
| (?<=...) | 正向回顾后发,匹配前面符合某个表达式的字符串。 |
| (?<!...) | 负向回顾后发,匹配前面不符合某个表达式的字符串。 |
在 PHP 中,可以使用模式修饰符来指定搜索或替换的方式。修饰符是放置在正则表达式模式末尾的字符。常见的模式修饰符包括:
| 修饰符 | 描述 |
| ------ | ------------------------------------------------------------ |
| i | 执行不区分大小写的匹配。 |
| m | 多行模式,使函数把字符串视为多行。 |
| s | 单行模式,使 .
元字符匹配包括换行符在内的所有字符。 |
| x | 忽略模式中的空白符,并可以在模式中使用注释。 |
| e | 将替换字符串作为代码执行。该模式已经弃用。请不要在新代码中使用该模式。 |
| u | 用于处理多字节字符时,将正则表达式视为 UTF-8 字符串。 |
我们来看一些实例:
$email = 'test@example.com';
if (preg_match('/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/', $email)) {
echo "Match found!";
} else {
echo "Match not found.";
}
$str = 'Hello,世界!';
if (preg_match('/[\x{4e00}-\x{9fa5}]/u', $str)) {
echo "Match found!";
} else {
echo "Match not found.";
}
$text = 'Visit our website: http://www.example.com/';
$pattern = '/http:\/\/[\w\.\/]+/';
$replacement = '<a href="$0">$0</a>';
echo preg_replace($pattern, $replacement, $text);
$str = "Hello, world! How are you?";
print_r(preg_split("/[\s,!?]/", $str));
PHP 正则表达式是一个强大的工具,可用于匹配和搜索字符串模式。通过使用元字符和模式修饰符,我们可以创建高度精细的正则表达式。由于正则表达式可以在多个环境中使用,因此值得投入时间和精力来熟悉和掌握它们。