php小经验:解析preg_match与preg_match_all 函数
正则表达式在 PHP 中的应用在 PHP 应用中,正则表达式主要用于:•正则匹配:根据正则表达式匹配相应的内容•正则替换:根据正则表达式匹配内容并替换•正则分割:根据正则表达式分割字符串在 PHP 中有两类正则表达式函数,一类是 Perl 兼容正则表达式函数,一类是 POSIX 扩展正则表达式函数。二者差别不大,而且推荐使用Perl 兼容正则表达式函数,因此下文都是以 Perl 兼容正则表达式函数为例子说明。定界符Perl 兼容模式的正则表达式函数,其正则表达式需要写在定界符中。任何不是字母、数字或反斜线()的字符都可以作为定界符,通常我们使用 / 作为定界符。具体使用见下面的例子。提示尽管正 在PHP编程中,正则表达式是一门强大的工具,它被广泛应用于文本处理,包括正则匹配、替换和分割字符串。Perl 兼容正则表达式(PCRE)函数是PHP中最常用的正则函数,例如`preg_match()`和`preg_match_all()`。 `preg_match()`函数用于执行单次正则匹配。它的基本语法是: ```php int preg_match(string pattern, string subject, [array matches], [int flags]) ``` `pattern`参数是你定义的正则表达式,`subject`是要在其上执行匹配的字符串。可选参数`matches`是一个数组,用于存储匹配的结果。`matches[0]`将保存与整个模式匹配的文本,`matches[1]`保存与第一个括号中的子模式匹配的文本,以此类推。如果匹配成功,`preg_match()`返回1,否则返回0。 举个例子,假设我们有一个字符串"PHP is the web scripting language of choice.",我们可以使用不区分大小写的正则表达式"/php/i"来查找"php",如以下代码所示: ```php <?php if (preg_match("/php/i", "PHP is the web scripting language of choice.", $matches)) { echo "A match was found: " . $matches[0]; } else { echo "A match was not found."; } ?> ``` 这个例子中,`preg_match()`会在找到第一次匹配后停止,如果你想获取所有匹配项,就需要使用`preg_match_all()`函数。 `preg_match_all()`函数执行全局正则匹配,找出所有匹配的结果。其语法与`preg_match()`相似,但会返回所有匹配项的数组。例如: ```php <?php $str = "https://www.jb51.net/index.html"; preg_match("/^(http:\/\/)?([^\/]+)/i", $str, $matches); $host = $matches[2]; preg_match("/[^.\/]+.[^.\/]+$/", $host, $matches); echo "域名为:" . $matches[0]; ?> ``` 在这个例子中,`preg_match_all()`不仅找到URL中的主机名,还进一步提取出二级域名"jb51.net"。 此外,`preg_match_all()`还接受一个可选参数`flags`,用于控制结果数组的结构。例如,`PREG_PATTERN_ORDER`使得`matches`数组的第一个元素包含所有模式匹配的数组,而`PREG_SET_ORDER`则使`matches`数组按照匹配的顺序存放各个匹配组。 下面是一个使用`preg_match_all()`来高亮显示HTML预格式化标签`<pre>`内所有出现的关键字(比如"php")的示例: ```php <?php $str = "<pre>学习php是一件快乐的事。</pre><pre>所有的phper需要共同努力!</pre>"; $kw = "php"; preg_match_all('/<pre>([sS]*?)<\/pre>/s', $str, $matches, PREG_SET_ORDER); foreach ($matches as $match) { if (strpos($match[1], $kw) !== false) { $match[1] = str_replace($kw, '<span style="color:red;">' . $kw . '</span>', $match[1]); } $str = str_replace($match[0], $match[1], $str); } echo $str; ?> ``` 这段代码会遍历所有`<pre>`标签内的文本,并将其中的"php"关键词替换为红色。 `preg_match()`和`preg_match_all()`是PHP中进行正则表达式操作的核心函数,它们可以帮助开发者高效地处理复杂的文本数据,实现灵活的文本查找、替换和提取功能。不过,值得注意的是,虽然正则表达式功能强大,但针对简单字符串操作,使用非正则函数可能会更高效。因此,在选择使用正则表达式时,应权衡性能和复杂性。
























- 粉丝: 6
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- Kotlin设计模式与最佳实践精华
- strongsort yolov12结合
- Korn Shell编程实战指南
- easytier-gui-2.3.2-x64-setup
- 2023年MySQL初级考试试题及答案.docx
- 创伤性疾病病人的护理MicrosoftPowerPoint演示文稿.pptx
- 2022通信毕业自我鉴定.docx
- DB21_T_1758_2009_辽宁绒山羊寄生虫病综合防控技术规范.pdf
- 2023年国家计算机等级考试二级c语言选择题及答案.doc
- OCLC-数据库检索与利用.ppt
- Optics5玻璃数据库文件导入操作指南.docx
- 2023年广西三类人员B证继续教育网络学习试题及答案.doc
- cad实习心得3000字3篇.doc
- 单片机知识点总结.docx
- 2023年操作系统课内实验报告.docx
- 2023年中农大项目管理在线作业课件.doc


