说明
int
preg_match ( string pattern, string subject [, array matches [, int flags]] )
在 subject 字符串中搜索与
pattern 给出的正则表达式相匹配的内容。
如果提供了
matches,则其会被搜索的结果所填充。$matches[0]
将包含与整个模式匹配的文本,$matches[1]
将包含与第一个捕获的括号中的子模式所匹配的文本,以此类推。
flags 可以是下列标记:
- PREG_OFFSET_CAPTURE
如果设定本标记,对每个出现的匹配结果也同时返回其附属的字符串偏移量。注意这改变了返回的数组的值,使其中的每个单元也是一个数组,其中第一项为匹配字符串,第二项为其偏移量。本标记自
PHP 4.3.0 起可用。
flags 参数自
PHP 4.3.0 起可用。
preg_match() 返回
pattern 所匹配的次数。要么是
0 次(没有匹配)或 1 次,因为 preg_match()
在第一次匹配之后将停止搜索。preg_match_all()
则相反,会一直搜索到 subject
的结尾处。如果出错 preg_match() 返回 FALSE。
例子 1. 在文本中搜索“php”
<?php
if (preg_match ("/php/i", "PHP is the web scripting language of choice.")) {
print "A match was found.";
} else {
print "A match was not found.";
}
?>
|
|
例子 2. 搜索单词“web”
<?php
if (preg_match ("/\bweb\b/i", "PHP is the web scripting language of choice.")) {
print "A match was found.";
} else {
print "A match was not found.";
}
if (preg_match ("/\bweb\b/i", "PHP is the website scripting language of choice.")) {
print "A match was found.";
} else {
print "A match was not found.";
}
?>
|
|
例子 3. 从 URL 中取出域名
<?php
preg_match("/^(http:\/\/)?([^\/]+)/i",
"http://www.php.net/index.html", $matches);
$host = $matches[2];
preg_match("/[^\.\/]+\.[^\.\/]+$/", $host, $matches);
echo "domain name is: {$matches[0]}\n";
?>
|
本例将输出:
|
参见 preg_match_all(),preg_replace()
和 preg_split()。