PHP preg_match()函数

preg_match()函数是PHP的内置函数, 它执行正则表达式匹配。此函数在字符串中搜索模式, 如果模式存在则返回true, 否则返回false。
通常, 搜索从$ subject字符串参数的开头开始。可选参数$ offset用于从指定位置开始搜索。
句法

int preg_match (string $pattern, string $subject, array $matches, int $flags, int $offset)

注意:$ offset是一个可选参数, 用于指定从何处开始搜索。参数
该函数接受五个参数, 如下所述:
图案
【PHP preg_match()函数】它是一个字符串类型参数。此参数保存要搜索的模式作为字符串。
学科
此参数保存我们在其中搜索模式的输入字符串。
火柴
如果提供matchs参数, 它将包含搜索结果。
matchs [0]-它将保留与完整模式匹配的文本。
matchs [1]-它将包含与第一个捕获的带括号的子模式匹配的文本, 依此类推。
标志
这些标志可以具有以下给出的标志:
  • PREG_OFFSET_CAPTURE:如果在preg_match()中传递此标志, 则对于每次发生的匹配, 附加字符串偏移量也将返回。
  • PREG_UNMATCHED_AS_NULL:如果在preg_match()中传递此标志, 则不匹配的子模式将报告为NULL, 否则将报告为空字符串。
抵销
默认情况下, 搜索从$ subject参数的开头开始。 offset参数用于指定开始搜索的位置。它是一个可选参数。
返回类型
如果pattern匹配, 则preg_match()函数返回true, 否则返回false。
注意:如果只想检查另一个字符串中是否包含一个字符串, 请不要使用preg_match()函数。使用strpos()函数, 因为它将更快。例子
< ?php //initialize a variable of string type $site = "srcmini"; preg_match('/(java)(t)(point)/', $site, $matches, PREG_OFFSET_CAPTURE); //display the matches result print_r($matches); ?>

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

我们可以看到下面给出的上述输出以更好地理解它。
Array ( [0] => Array ( [0] => srcmini [1] => 0 ) [1] => Array ( [0] => java [1] => 0 ) [2] => Array ( [0] => t [1] => 4 ) [3] => Array ( [0] => point [1] => 5 ) )

示例:不区分大小写的搜索
< ?php //initialize a variable of string type $website = "JTP is a best online platform to learn."; //case insensitive search for word jtp //The "i" after pattern delimiter indicates case-insensitive search $res = preg_match('/jtp/i', $website, $matches); if ($res) { echo "Pattern matched in string.< /br> "; print_r($matches); } else { echo "Pattern not matched in string."; } ?>

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

示例:通过使用单词边界(\ b)
< ?php /* The \b indicates the word boundary in the pattern. So, it matches only the distinct word like "web", and words like "coreweb" or " webinar" do not match partially.*/ if (preg_match("/\bweb\b/i", "PHP is a web scripting language.")) { echo "A match was found. < /br> "; } else { echo "A match was not found. < /br> "; } if (preg_match("/\bweb\b/i", "PHP is a website scripting language.")) { echo "A match was found."; } else { echo "A match was not found."; } ?>

输出
A match was found. A match was not found.

示例:从URL中获取域名
< ?php // get host name from URL preg_match('@^(?:https://)?([^/]+)@i', "https://www.srcmini.com/php-tutorial", $matches); $host = $matches[1]; // get last two segments of host name preg_match('/[^.]+\.[^.]+$/', $host, $matches); echo "Domain name is: {$matches[0]}\n"; ?>

输出
Domain name is: srcmini.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 Any digit
\D 任何非数字
\w 任何文字字符(字母, 数字, 下划线)
\W 任何非文字字元
\b 词边界检查器
/?/ 开始和结束正则表达式
(?) 捕获括号中包含的所有内容()
(a|b) a或b
a? 零或一个
a* 零个或多个
a+ 一个或多个
a{3} 恰好是3个
a {3, } 3个或更多
一个{3, 6} 在3到6之间
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之间的任何小写或大写字母。

    推荐阅读