加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

preg_match进行正则表达式匹配

发布时间:2020-12-14 02:23:14 所属栏目:百科 来源:网络整理
导读:preg_match (PHP 3 = 3.0.9,PHP 4,PHP 5) preg_match--进行正则表达式匹配 说明 int preg_match ( string pattern,string subject [,array matches [,int flags]] ) 在 subject 字符串中搜索与 pattern 给出的正则表达式相匹配的内容。 如果提供了 matches

preg_match

(PHP 3 >= 3.0.9,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

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

例子 1. 在文本中搜索“php”

<?php
//模式定界符后面的"i"表示不区分大小写字母的搜索
if(preg_match("/php/i","PHPisthewebscriptinglanguageofchoice.")){
print
"Amatchwasfound.";
}else{
print
"Amatchwasnotfound.";
}
?>

例子 2. 搜索单词“web”

<?php
/*模式中的b表示单词的边界,因此只有独立的"web"单词会被匹配,
*而不会匹配例如"webbing"或"cobweb"中的一部分*/
if(preg_match("/bwebb/i","PHPisthewebscriptinglanguageofchoice.")){
print
"Amatchwasfound.";
}else{
print
"Amatchwasnotfound.";
}

if(
preg_match("/bwebb/i","PHPisthewebsitescriptinglanguageofchoice.")){
print
"Amatchwasfound.";
}else{
print
"Amatchwasnotfound.";
}
?>

例子 3. 从 URL 中取出域名

<?php
//从URL中取得主机名
preg_match("/^(http://)?([^/]+)/i",
"http://www.php.net/index.html",$matches);
$host=$matches[2];

//从主机名中取得后面两段
preg_match("/[^./]+.[^./]+$/",$host,$matches);
echo
"domainnameis:{$matches[0]}n";
?>

本例将输出:

domain name is: php.net

参见 preg_match_all()preg_replace()preg_split()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读