PCRE 函数
php 手册 | 脚本学堂 | 脚本编程 | 网站编程 | 系统管理 | 服务器配置 | 数据库管理 | Php教程 | python教程 | 正则表达式 | 批处理脚本 | Centos教程 | Linux基础教程

preg_match

(PHP 4, PHP 5)

preg_match进行正则表达式匹配

说明

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

Tip

如果只想查看一个字符串是否包含在另一个字符串中,不要用 preg_match()。可以用 strpos()strstr() 替代,要快得多。

Example #1 在文本中搜索“php”

<?php
// 模式定界符后面的 "i" 表示不区分大小写字母的搜索
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.";
}
?>

Example #2 搜索单词“web”

<?php
/* 模式中的 \b 表示单词的边界,因此只有独立的 "web" 单词会被匹配,
 * 而不会匹配例如 "webbing" 或 "cobweb" 中的一部分 */
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.";
}
?>

Example #3 从 URL 中取出域名

<?php
// 从 URL 中取得主机名
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";
?>

本例将输出:

domain name is: php.net

参见 preg_match_all()preg_replace()preg_split()


PCRE 函数
php 手册 | 脚本学堂 | 脚本编程 | 网站编程 | 系统管理 | 服务器配置 | 数据库管理 | Php教程 | python教程 | 正则表达式 | 批处理脚本 | Centos教程 | Linux基础教程