猿问

关于preg_match_all返回的数组

我想用正则表达式匹配html的
标签内的
用的正则表达式是#(.*)#
因为匹配的原文其实就是一个有规律的表格我想要将匹配出来的多个结果分别存入数据库中
但是返回的二维数组我不明白
我的理解是第一维的结果是正常匹配出来的结果然后第二维是在一维的结果内再进行匹配吗但是实际出来第一维数组和第二维数组是一样的呀
我找到一个preg_match参数
参数说明:
参数说明
pattern正则表达式
subject需要匹配检索的对象
matches可选,存储匹配结果的数组,$matches[0]将包含与整个模式匹配的文本,$matches[1]将包含与第一个捕获的括号中的子模式所匹配的文本,以此类推
(o.o类推你妹呀看不懂呀初学者让大家)
代码如下
//用正则表达式匹配TR标签第二个TR标签为第一大节课对该段标签再去匹配td标签结果有7个依次为星期一到星期天第一节课的内容
$test="
 
星期一
星期二
星期三
星期四
星期五
星期六
星期日
第一大节
11
12
13
14
15
16
17
第二大节
21;
22
形势与政策(6)
第10周
吕志和礼堂 白文杰
24
25
26
27
第三大节
 
英语
 
 
 
数学
 
第四大节
 
 
 
音乐
 
 
 
晚 上
 
 
 
 
 
 
 
";
functiontrimall($str)//删除全部空格
{
$qian=array(""," ","\t","\n","\r");$hou=array("","","","","");
returnstr_replace($qian,$hou,$str);
}
$test=trimall($test);
$match="#(.*)#";
preg_match_all($match,$test,$TR);
print_r($TR);
?>

		
慕勒3428872
浏览 725回答 2
2回答

萧十郎

请问你理解了这句话吗?$matches[1]将包含与第一个捕获的括号中的子模式所匹配的文本,括号指的是什么?理解之后,我在提醒下,你的$matches[0]肯定比$matches[1]要多TR这个标签吧?

RISEBY

preg_match_all不是匹配一次就停止,而是匹配完得到所有的结果。所以$matches[0]就不是string而是arrayofstring。然后每个匹配得到的表达式都对应一个子串,所以[1]同理。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答