PHP preg_match() 函数

2024 年 8 月 29 日 | 4 分钟阅读

preg_match() 函数是 PHP 的内置函数,用于执行正则表达式匹配。此函数在字符串中搜索模式,如果模式存在则返回 true,否则返回 false。

通常,搜索从 $subject 字符串参数的开头开始。可选参数 $offset 用于从指定位置开始搜索。

语法

注意:$offset 是一个可选参数,指定开始搜索的位置。

参数

此函数接受五个参数,描述如下

pattern

它是一个字符串类型参数。此参数将要搜索的模式作为字符串保存。

subject(主题)

此参数保存我们搜索模式的输入字符串。

matches(匹配项)

如果提供了 matches 参数,它将包含搜索结果。

matches[0] - 它将保存与完整模式匹配的文本。

matches[1] - 它将包含与第一个捕获的带括号子模式匹配的文本,依此类推。

flags

标志可以包含以下给定的标志

  • PREG_OFFSET_CAPTURE:如果此标志在 preg_match() 中传递,则每个出现的匹配项的附加字符串偏移量也将返回。
  • PREG_UNMATCHED_AS_NULL:如果此标志在 preg_match() 中传递,则未匹配的子模式将报告为 NULL,否则它们将报告为空字符串。

offset

默认情况下,搜索从 $subject 参数的开头开始。offset 参数用于指定搜索的起始位置。它是一个可选参数。

返回值

如果模式匹配,preg_match() 函数返回 true,否则返回 false。

注意:如果您只想检查一个字符串是否包含在另一个字符串中,请不要使用 preg_match() 函数。请使用 strpos() 函数,因为它会更快。

示例

输出

Array ( [0] => Array ( [0] => javatpoint [1] => 0 ) [1] => Array ( [0] => java [1] => 0 )
[2] => Array ( [0] => t [1] => 4 ) [3] => Array ( [0] => point [1] => 5 ) )

我们可以看到下面的输出,以便更好地理解它。

Array ( 
[0] => Array ( 
[0] => javatpoint 
[1] => 0 
) 
[1] => Array (
 [0] => java 
[1] => 0 
) 
[2] => Array (
 [0] => t 
[1] => 4 
) 
[3] => Array ( 
[0] => point
 [1] => 5 
) 
)

示例:不区分大小写的搜索

输出

Pattern matched in string.
Array ( [0] => JTP )

示例:使用单词边界 (\b)

输出

A match was found.
A match was not found.

示例:从 URL 中获取域名

输出

Domain name is: javatpoint.com

正则表达式 (Regular Expression) 语法

[abc]匹配单个字符 - a、b 或 c
[^abc]匹配除 a、b 或 c 之外的任何单个字符
[a-z]匹配范围 a-z 内的任何单个字符
[a-zA-Z]范围 a-z 或 A-Z 内的任何单个字符
^行首
$行尾
\A字符串开头
\z字符串结尾
.任何单个字符
\s任何空白字符
\S任何非空白字符
\d任何数字
\D任何非数字
\w任何单词字符(字母、数字、下划线)
\W任何非单词字符
\b单词边界检查器
/?/开始和结束正则表达式
(?)捕获括号 () 中包含的所有内容
(a|b)a or b
a?零个或一个 a
a*零个或多个 a
a+一个或多个 a
a{3}正好 3 个 a
a{3,}3 个或更多 a
a{3,6}3 到 6 个 a 之间
i不区分大小写检查
m使点匹配换行符
x忽略正则表达式中的空白

解释模式 "[^[a-zA-Z0-9._-] +@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/]"

  • ""/?/"" 它表示正则表达式的开始和结束。
  • "[^[a-zA-Z0-9._-]" 它匹配任何大写或小写字母、0 到 9 之间的数字、点、下划线或破折号。
  • "+@[a-zA-Z0-9-]" 它匹配 @ 符号,后跟大写或小写字母、0 到 9 之间的数字或破折号。
  • "+\.[a-zA-Z.]{2,5}$/" 点通过使用反斜杠转义,然后匹配字符串末尾长度在 2 到 5 之间的大写或小写字母。

下一个主题preg_replace() 函数