PHP preg_match()函数

PHP preg_match() 函数 preg_match()函数是PHP的内置函数,它执行正则表达式匹配。…

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 = "javatpoint";
preg_match('/(java)(t)(point)/', $site, $matches, PREG_OFFSET_CAPTURE);
//display the matches result
print_r($matches);
?>

输出:

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 
) 
)

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

<?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("/bwebb/i", "PHP is a web scripting language.")) {
echo "A match was found. </br>";
} else {
echo "A match was not found. </br>";
}

if (preg_match("/bwebb/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.javatpoint.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: javatpoint.com

正则表达式(Regular Expression)语法

[abc] Matches a single character – a, b, or c
[^abc] Matches any single character but a, b, or c
[a-z] Matches any single character within the range a-z
[a-zA-Z] Any single character within the range a-z or A-Z
^ Start of line
$ End of line
A Start of string
z End of string
. Any single character
s Any whitespace character
S Any non-whitespace character
d Any digit
D Any non-digit
w Any word character (letter, number, underscore)
W Any non-word character
b Word boundary checker
/?/ Starts and ends the regular expression
(?) Capture everything enclosed in parenthesis ()
(a|b) a or b
a? Zero or one of a
a* Zero or more of a
a+ One or more of a
a{3} Exactly 3 of a
a{3,} 3 or more of a
a{3,6} Between 3 and 6 of a
i Case insensitive check
m Make dot match newlines
x Ignore whitespace in regex

解释模式“ [[^ [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之间的任何小写或大写字母。

类别:PHP 技巧

本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。

评论 (0)COMMENT

登录 账号发表你的看法,还没有账号?立即免费 注册