老师,这个php中匹配结果有问题
<?php
//定义一个变量,变量中使用模式单元()实现如图效果以https开头以com结尾(使用两种方法,正则中使用http匹配)的正则内容。
$pattern1 = "/(http).*(com)$/";
$pattern2 = "/(http)\B.+(com)/";
//定义一个变量,存放字符串内容,字符串内容中同截图一样。
$subject = "www.demo.com http://foo.co.uk/
http://regexr.com/foo.html?q=bar
https://IMOOC.com";
//使用正则函数给这两个变量相互匹配,并赋值结果给一个变量
$result = preg_match_all($pattern1, $subject, $matches);
//判断赋值的变量,如果匹配成功就输出“匹配成功”字符串,失败则输出“匹配失败”字符串。
if ($result) {
echo "匹配成功";
} else {
echo "匹配失败";
}
var_dump($matches);
?>
结果:匹配成功array(3) { [0]=> array(1) { [0]=> string(17) "https://IMOOC.com" } [1]=> array(1) { [0]=> string(4) "http" } [2]=> array(1) { [0]=> string(3) "com" } }
这里结果咋会有三个呢,在regexr.com中都只有一个匹配结果
正在回答
同学你好,preg_match_all()函数会将搜索 subject 中所有匹配 pattern 给定正则表达式的匹配结果并且将输出到 matches 中。在第一个匹配找到后, 子序列继续从最后一次匹配位置搜索。所以有三个结构。同学可只输出第一个结果。如下所示:
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
- 参与学习 人
- 提交作业 225 份
- 解答问题 3372 个
掌握用PHP开发互联网网站的必备功能,掌握当下主流的Linux系统开发,并熟练使用热门框架ThinkPhp开发电商团购项目,是通向PHP工程师必经之路。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星