• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

关于preg_match_all返回的数组

php 搞代码 4年前 (2022-01-25) 20次浏览 已收录 0个评论
文章目录[隐藏]

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

标签内的
用的正则表达式是 #

(.*)

#

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

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

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

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

代码如下

<code><?php// 用正则表达式 匹配 TR标签 第二个TR标签 为第一大节课  对该段标签 再去匹配td标签  结果有7个  依次为 星期一到星期天第一节课的内容$test = "<TBODY><TR bgColor="#eeeeee"><TD width="9%"><DIV align="center"> </DIV></TD><TD width="13%"><DIV align="center">星期一</DIV></TD><TD width="13%"><DIV align="center">星期二</DIV></TD><TD width="13%"><DIV align="center">星期三</DIV></TD><TD width="13%"><DIV align="center">星期四</DIV></TD><TD width="13%"><DIV align="center">星期五</DIV></TD><TD width="13%"><DIV align="center">星期六</DIV></TD><TD width="13%"><DIV align="center">星期日</DIV></TD></TR><TR><TD vAlign="center" bgColor="#eeeeee"><DIV align="center">第一大节</DIV></TD><td valign="top" align="center">11</td><td valign="top" align="center">12</td><td valign="top" align="center">13</td><td valign="top" align="center">14</td><td valign="top" align="center">15</td><td valign="top" align="center">16</td><td valign="top" align="center">17</td></TR><TR><TD vAlign="center" bgColor="#eeeeee"><DIV align="center">第二大节</DIV></TD><td valign="top" align="center">21;</td><td valign="top" align="center">22</td><td valign="top" align="center">形势与政策(6)<br>第10周<br>吕志和礼堂 白文杰</td><td valign="top" align="center">24</td><td valign="top" align="center">25</td><td valign="top" align="center">26</td><td valign="top" align="center">27</td></TR><TR><TD vAlign="center" bgColor="#eeeeee"><DIV align="center">第三大节</DIV></TD><td valign="top" align="center"> </td><td valign="top" align="center">英语</td><td valign="top" align="center"> </td><td valign="top" align="center"> </td><td valign="top" align="center"> </td><td valign="top" align="center">数学</td><td valign="top" align="center"> </td></TR><TR><TD vAlign="center" bgColor="#eeeeee"><DIV align="center">第四大节</DIV></TD><td valign="top" align="center"> </td><td valign="top" align="center"> </td><td valign="top" align="center"> </td><td valign="top" align="center">音乐</td><td valign="top" align="center"> </td><td valign="top" align="center"> </td><td valign="top" align="center"> </td></TR><TR><TD vAlign="center" bgColor="#eeeeee"><DIV align="center">晚 上</DIV></TD><td valign="top" align="center"> </td><td valign="top" align="center"> </td><td valign="top" align="center"> </td><td valign="top" align="center"> </td><td valign="top" align="center"> </td><td valign="top" align="center"> </td><td valign="top" align="center"> </td></TR><TR>";function trimall($str)//删除全部空格{    $qian=array(" "," ","\t","\n","\r");$hou=array("","","","","");    return str_replace($qian,$hou,$str);    }$test = trimall($test);$match = "#<TR>(.*)</TR>#";preg_match_all($match,$test,$TR);print_r($TR);?></code>

回复内容:

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

标签内的
用的正则表达式是 #

(.*)

#

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

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

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

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

代码如下

<code><?php// 用正则表达式 匹配 TR标签 第二个TR标签 为第一大节课  对该段标签 再去匹配td标签  结果有7个  依次为 星期一到星期天第一节课的内容$test = "<TBODY><TR bgColor="#eeeeee"><TD width="9%"><DIV align="center"> </DIV></TD><TD width="13%"><DIV align="center">星期一</DIV></TD><TD width="13%"><strong>)本文来(源gaodai#ma#com搞@@代~&码*网2</strong><pre>搞代gaodaima码

星期二
星期三
星期四
星期五
星期六
星期日
第一大节

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]同理。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:关于preg_match_all返回的数组

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址