个性化阅读
专注于IT技术分析

PHP preg_match()函数

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

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

句法

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

注意:$ offset是一个可选参数, 用于指定从何处开始搜索。

参数

该函数接受五个参数, 如下所述:

图案

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

学科

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

火柴

如果提供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.srcmini02.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: srcmini02.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之间的任何小写或大写字母。

赞(0)
未经允许不得转载:srcmini » PHP preg_match()函数

评论 抢沙发

评论前必须登录!