作者:爱心常在V_991 | 来源:互联网 | 2017-05-14 02:20
我想用正则表达式匹配html的标签内的用的正则表达式是#(.*)#因为匹配的原文其实就是一个有规律的表格我想要将匹配出来的多个结果分别存入数据库中但是返回的二维数组我不明白我的理解是第一维的结果是正...
我想用正则表达式匹配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]同理。