PHP preg_match() 函数

定义和用法

preg_match() 函数返回是否在字符串中找到匹配项。

实例

例子 1

使用正则表达式对字符串中的 "w3school" 进行不区分大小写的搜索:

<?php
$str = "Visit W3School";
$pattern = "/w3school/i";
echo preg_match($pattern, $str);
?>

亲自试一试

例子 2

使用 PREG_OFFSET_CAPTURE 找到输入字符串中匹配项的位置:

<?php
$str = "Welcome to W3School";
$pattern = "/w3school/i";
preg_match($pattern, $str, $matches, PREG_OFFSET_CAPTURE);
print_r($matches);
?>

亲自试一试

语法

preg_match(pattern, input, matches, flags, offset)
参数 描述
pattern 必需的。包含指示要搜索的内容的正则表达式。
input 必需的。将在其中执行搜索的字符串。
matches 选修的。此参数中使用的变量将填充一个数组,该数组包含找到的所有匹配项。
flags

选修的。组选项,可更改 matches 数组的结构:

  • PREG_OFFSET_CAPTURE - 启用此选项后,每个匹配项将不再是字符串,而是数组,其中第一个元素是包含匹配项的子字符串,第二个元素是子字符串在输入中的第一个字符的位置。
  • PREG_UNMATCHED_AS_NULL - 启用此选项后,未匹配的子模式将返回为 NULL,而不是空字符串。
offset

选修的。默认为 0。指示在字符串中开始搜索的位置。

preg_match() 函数不会找到在此参数给定的位置之前出现的匹配项。

技术细节

返回值:

如果找到匹配项,则返回 1;

如果没有找到匹配项,则返回 0;

如果发生错误,则返回 false。

PHP 版本: 4+

PHP 更新日志:

PHP 7.2 - 添加了 PREG_UNMATCHED_AS_NULL 标志。

PHP 5.3.6 - 当偏移量长于输入长度时,该函数返回 false。

PHP 5.2.2 - 除了之前的 (?P<name>) 语法之外,命名子模式还可以使用 (?'name') 和 (? <name>) 语法。