欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

关于preg_match_all返回的数组

程序员文章站 2024-01-12 09:25:34
...
我想用正则表达式匹配html的 标签内的
用的正则表达式是 #(.*)#

因为匹配的原文 其实就是一个有规律的表格 我想要将匹配出来的多个结果分别存入数据库中

但是返回的二维数组我不明白
我的理解是第一维的结果是正常匹配出来的结果 然后第二维是在一维的结果内再进行匹配吗 但是实际出来第一维数组和第二维数组是一样的呀

我找到一个preg_match参数
参数说明:
参数 说明
pattern 正则表达式
subject 需要匹配检索的对象
matches 可选,存储匹配结果的数组, $matches[0] 将包含与整个模式匹配的文本,$matches[1] 将包含与第一个捕获的括号中的子模式所匹配的文本,以此类推

(o.o 类推你妹呀 看不懂呀 初学者让大家)

代码如下





星期一
星期二
星期三
星期四
星期五
星期六
星期日
第一大节
11 12 13 14 15 16 17
第二大节
21; 22 形势与政策(6)
第10周
吕志和礼堂 白文杰 24 25 26 27
第三大节
英语 数学
第四大节
音乐
晚 上
"; function trimall($str)//删除全部空格 { $qian=array(" "," ","\t","\n","\r");$hou=array("","","","",""); return str_replace($qian,$hou,$str); } $test = trimall($test); $match = "# (.*)#"; preg_match_all($match,$test,$TR); print_r($TR); ?>

回复内容:

我想用正则表达式匹配html的

标签内的
用的正则表达式是 #(.*)#

因为匹配的原文 其实就是一个有规律的表格 我想要将匹配出来的多个结果分别存入数据库中

但是返回的二维数组我不明白
我的理解是第一维的结果是正常匹配出来的结果 然后第二维是在一维的结果内再进行匹配吗 但是实际出来第一维数组和第二维数组是一样的呀

我找到一个preg_match参数
参数说明:
参数 说明
pattern 正则表达式
subject 需要匹配检索的对象
matches 可选,存储匹配结果的数组, $matches[0] 将包含与整个模式匹配的文本,$matches[1] 将包含与第一个捕获的括号中的子模式所匹配的文本,以此类推

(o.o 类推你妹呀 看不懂呀 初学者让大家)

代码如下





星期一
星期二
星期三
星期四
星期五
星期六
星期日
第一大节
11 12 13 14 15 16 17
第二大节
21; 22 形势与政策(6)
第10周
吕志和礼堂 白文杰 24 25 26 27
第三大节
英语 数学
第四大节
音乐
晚 上
"; function trimall($str)//删除全部空格 { $qian=array(" "," ","\t","\n","\r");$hou=array("","","","",""); return str_replace($qian,$hou,$str); } $test = trimall($test); $match = "# (.*)#"; preg_match_all($match,$test,$TR); print_r($TR); ?>

请问你理解了这句话吗?
$matches[1] 将包含与第一个捕获的括号中的子模式所匹配的文本,括号指的是什么?

理解之后,我在提醒下,你的$matches[0]肯定比$matches[1]要多 TR 这个标签吧?

preg_match_all不是匹配一次就停止,而是匹配完得到所有的结果。所以$matches[0]就不是string而是array of string。然后每个匹配得到的表达式都对应一个子串,所以[1]同理。