PHP使用正则获取一段文字中小括号内的内容段

原创 阁主  2021-07-28 16:38:28  阅读 4293 次 评论 0 条
摘要:

阁主又在水文了,本文就做个简单的记录自己今天刚写好的一个采集程序,需要用到PHP的preg_match_all函数进行正则匹配提取文本段中小括号里的一段内容,供大家参考学习。

重点语法知识

preg_match_all:执行一个全局正则表达式匹配。

preg_match_all(
    string $pattern,
    string $subject,
    array &$matches = null,
    int $flags = 0,
    int $offset = 0
): int|false|null
  • 搜索subject中所有匹配pattern给定正则表达式的匹配结果并且将它们以flag指定顺序输出到matches中.

  • 在第一个匹配找到后, 子序列继续从最后一次匹配位置搜索.   

重点就这一个PHP的关键函数也是经常用到一个正则匹配函数,正如手册所说的就是专门用于执行正则表达式的,preg_match_all函数会返回一个多维数组给指定的参数matches变量。

代码部分

简单的写了个测试的代码,实践见真理比较重要!

#测试文本段
$txtTest = '澳大利亚昆士兰大堡礁 (© Gary Bell/Minden Pictures)';
#正则提取括号内的字符段,并赋值给$textOk,类型为array
preg_match_all('/\((.*)\)/s', $txtTest, $textOk);
#输出截取的文本段
print_r($textOk);

可以看看匹配正则后赋值给$textOk变量的情况是一个数组类型,阁主自己的理解是正则匹配至少会匹配出两个或两个以上的数据段,说以返回的参数数据是数组类型,打印出来的可以很清晰的看到是这样的,第一个是绝对匹配包括小括号的,第二个是对应的弱(子)匹配,很多时候我们想要的都是第二种,所以就把它返回的当做数组来处理即可。

正则匹配.png

就比如我们要输出不带括号和带括号的就是如下运用,代码是死的但是人是活的,要灵活使用!基础也很重要!

<?php
#测试文本段
$txtTest = '澳大利亚昆士兰大堡礁 (© Gary Bell/Minden Pictures)';
#正则提取括号内的字符段,并赋值给$textOk,类型为array
preg_match_all('/\((.*)\)/s', $txtTest, $textOk);
#输出带括号
echo '带括号:' . $textOk[0][0] . '<br>';
#输出不带括号
echo '不带括号:' . $textOk[1][0] . '<br>';

正则结果.png

总结

基础很重要,正则在很多应用中都会出现,更多的是用于验证或采集的方面,道生一,一生二,二生万物,万物离不开学习,加油!

本文地址:https://www.mainblog.cn/258.html
版权声明:本文为原创文章,版权归 阁主 所有,欢迎分享本文,转载请保留出处!
免责申明:有些内容源于网络,没能联系到作者。如侵犯到你的权益请告知,我们会尽快删除相关内容。

评论已关闭!