php正则表达式中preg_match_all函数的详解,reg_match_all函数具体说明大家可以查看PHP手册,此处给大家展示一些简单实用的应用例子,preg_match_all函数可以通过正则表达式,匹配到字符串的内容到一个数组中。
preg_match_all函数在内容的处理中还是非常实用的一个函数,可以用于处理字符串的匹配。
preg_match_all函数语法
int preg_match_all ( string $pattern , string $subject [, array &$matches [, int $flags = PREG_PATTERN_ORDER [, int $offset = 0 ]]] )
参数说明
$pattern: 要搜索的模式,字符串形式。
$subject: 输入字符串。
$matches: 多维数组,作为输出参数输出所有匹配结果, 数组排序通过flags指定。
$flags:可以结合下面标记使用(注意不能同时使用PREG_PATTERN_ORDER和 PREG_SET_ORDER):
offset: 通常, 查找时从目标字符串的开始位置开始。可选参数offset用于 从目标字符串中指定位置开始搜索(单位是字节)。
常用的正则表达式
想要使用preg_match_all函数,了解正则表达式是一个必要的条件,具体可以了解正则表达式相关的文档,这里给大家举例一些常用的表达式:
匹配纯数字
[0-9]+
匹配字母
[a-zA-Z]+ //大小写字母,举例SeoddCn
[a-z]+ //小写字母,举例seoddcn
[A-Z]+ //大写字母SEODDCN
2
3
匹配大小写字母
[a-zA-Z0-9]+ //举例9seoDD8cn
匹配<和>字符
[<>]+
如果不想匹配某个规则在表达式开始位置加入‘^’,如下
[^a-zA-Z]+ //不匹配大小写字母
[^a-z]+ //不匹配小写字母
[^A-Z]+ //不匹配大写字母
2
3
运用实例
字符串内容:“潘某人SEO,365天,每日1帖子,”,以这句话来举例preg_match_all函数的用法。
匹配数字
$str = "潘某人SEO,365天,每日1帖子";//需要进行筛选的字符串
preg_match_all('/[0-9]+/i',$str,$row)
2
正则表达式匹配默认是大小写明感,正则表达式后‘/i’代表匹配的时候大小写不明感。
运行结果以三维数组保存在$row中,如上述$str总共可以匹配到两次数字,分为是第一个数字365,第二个数字1,具体的结构打印下$row观察下。
灵活应用
但是如果在复杂的字符窜中匹配到,想要的某个数字是今天的重点,其实有一种简单的做法,在实际应用中内容虽然比较复杂但是某些内容的有固定规律的,如需要获取上面字符串中的天数。
观察到的结构是‘xxx天’所可以有正则表达式‘/[0-9]+天/i’
$str = "潘某人SEO,365天,每日1帖子";//需要进行筛选的字符串
preg_match_all('/[0-9]+天/i',$str,$row)
$str = $row[0][0];
preg_match_all('/[0-9]+',$str,$row)
echo $row[0][0];//输出结果天数
2
3
4
5