int preg_match_all ( string pattern, string subject, array &matches [, int flags] )

最近在研究爬虫,对抓取的页面进行解析,需要用到这个函数。由于之前对这个函数只是一知半解,结果被狠狠地坑了一把。

flags 是可省略的,默认值是PREG_PATTERN_ORDER,还可以有其他值,这个会影响matches的内容形式。但这个不重要,只需知道缺省flags时,matches是什么样子就可以了。

pattern和subject就不多说了,重点说一说matches。

matches(注意这里是引用)是一个二维数组,matches[0] 是整个pattern匹配的结果。matches[1] 是第一个子模式(正则表达式中的子模式,就是圆括号括起来的部分)匹配的结果,matches是 第二个子模式的匹配结果。

而且,这个函数的返回值是整个pattern匹配到的结果数量。

现举例说明:

<?php  
    $pattern = "/<[^>]+>(.*)<\/[^>]+>/U";
    $subject = "<b>example:</b><div align = left>this is a test</div>";
    preg_match_all($pattern,$subject,$out);
    print_r($out);    
?>
注意$pattern中标红的就是子模式。

注意这个结果的形式,array[0]是整个pattern匹配到的结果,array[1]是pattern中子模式 (.*) 所匹配到的结果。但是array[1]匹配的结果是和array[0]中的结果相对应。

PHP preg_match_all详解相关推荐

  1. php调用C代码的方法详解和zend_parse_parameters函数详解

    来源:http://my.oschina.net/Customs/blog/490873 http://blog.csdn.net/super_ufo/article/details/3863731 ...

  2. php 两个单词 正则表达式字符前_PHP正则表达式核心技术完全详解 第3节

    PHP 正则表达式核心技术详解 第3节 我们在第2节中学习了有关正则的原子.元字符.原子表.转义字符等重要知识点, 这一节我们来讲一下正则中的量词.断言匹配.逻辑匹配.等重要知识! 1 量词 量词: ...

  3. php preg_match 只匹配第一个字符_PHP正则表达式核心技术完全详解 第3节

    PHP 正则表达式核心技术详解 第3节 我们在第2节中学习了有关正则的原子.元字符.原子表.转义字符等重要知识点, 这一节我们来讲一下正则中的量词.断言匹配.逻辑匹配.等重要知识! 1 量词 量词: ...

  4. 攻防世界web进阶区Web_php_wrong_nginx_config详解

    攻防世界web进阶区Web_php_wrong_nginx_config详解 题目 详解 题目 打开发现无论我们输入什么他都会弹出网站建设不完全 那么我们使用御剑进行扫描,扫描到了admin和robo ...

  5. php中正则表达式详解,php正则表达式详解

    php正则表达式详解 一.贪婪模式与非贪婪模式 贪婪模式:可以这样认为,就是在整个表达式匹配成功的前提下,尽可能多的匹配,也就是所谓的"贪婪",通俗点讲,就是看到想要的,有多少就捡 ...

  6. PHP数组foreach遍历输出例子详解

    通常我们对于数据遍历会使用到foreach来操作当然也有使用到while list each函数来实现了,但在方便面上来看foreach更简洁好用性能也非常的不错,下面本人整理了一款在开发应用中for ...

  7. c语言 字符串 strncpy,详解c语言中的 strcpy和strncpy字符串函数使用

    详解c语言中的 strcpy和strncpy字符串函数使用 strcpy 和strcnpy函数--字符串复制函数. 1.strcpy函数 函数原型:char *strcpy(char *dst,cha ...

  8. 从命令行到IDE,版本管理工具Git详解(远程仓库创建+命令行讲解+IDEA集成使用)

    首先,Git已经并不只是GitHub,而是所有基于Git的平台,只要在你的电脑上面下载了Git,你就可以通过Git去管理"基于Git的平台"上的代码,常用的平台有GitHub.Gi ...

  9. JVM年轻代,老年代,永久代详解​​​​​​​

    秉承不重复造轮子的原则,查看印象笔记分享连接↓↓↓↓ 传送门:JVM年轻代,老年代,永久代详解 速读摘要 最近被问到了这个问题,解释的不是很清晰,有一些概念略微模糊,在此进行整理和记录,分享给大家.在 ...

最新文章

  1. springboot redis
  2. 话说Ubuntu和FreeBSD将要合成一个新的版本:UbuntuBSD
  3. 加密与解密、OpenSSL(SSL/TLS)、OpenSSH(ssh)、dropbear
  4. hive无法执行带where语句的SQL
  5. 统一建模语言UML要点全面简析
  6. 计算机相关专业学习经验总结
  7. Java 字符串,byte[],16进制的字符串互转
  8. IBM调低DB 2价格,Oracle提高MySQL使用成本
  9. 使用Apollo通过WebSocket通过STOMP轻松进行消息传递
  10. 【CodeForces - 260B 】Ancient Prophesy (暴力匹配,BF算法,日期字符串)
  11. @Autowired @Primary @Qualifier
  12. 安装SQL Server 2012遇到“需要更新的以前的Visual Studio 2010实例.”
  13. 2小时部署实时反欺诈深度学习模型 —— IBM主机机器学习平台社区版简介
  14. 怎么根据分隔符号将Excel数据换行复制
  15. 绕过微信客户端授权,获取网页源码
  16. 服务器ldb文件可以删除,Access数据库锁死,出现.ldb文件解决办法
  17. 2022-2028全球与中国汽车空调冷凝器市场现状及未来发展趋势
  18. 《STL》— NYOJ STL练习 习题汇总
  19. 蓝字冲销是什么意思_会计记账,贷方红字,贷方蓝字什么意思
  20. 海岸TDM平台性能-续

热门文章

  1. 国产自编程语言Maggot++发布测试版!
  2. linux filo顺序是什么意思,嵌入式系统复习 南京邮电大学 期末复习 答案 提纲
  3. jetsonnano安装cartographer记录
  4. 揭秘——STL空间配置器
  5. 用传递函数求电路的频率特性
  6. 零基础无学历,长沙哪家it学校好
  7. 利用exif.js解决ios或Android手机上传竖拍照片旋转90度问题
  8. 2023中国(上海)国际乳品产业展览会
  9. 插入、删除、修改指向下一节点和下下一节点链表
  10. 加拿大安省欢ajax,加拿大安省EOI系统上线,开始接受申请!