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 删除。
还没有任何评论,赶紧来占个楼吧!