当前位置:Gxlcms > PHP教程 > 哪位高手帮改个正则

哪位高手帮改个正则

时间:2021-07-01 10:21:17 帮助过:9人阅读

谁帮改个正则?
这是要匹配的内容:



2013

row1

row2

row3



2014

row1

row2




要匹配dl,并且匹配dl下的dt,和所有的dd,

我是这样写的:

\s+
(.*?)
(\s+
(.*?)
\s+)*?


但是这个匹配出的结果不太对,dd始终只匹配到了最后一个。这个表达式应该怎么修改呢? 正则

分享到:


------解决方案--------------------
分开匹配吧,dl 匹配一次,里面的dt和dd再匹配一次。
------解决方案--------------------
变通一下(待匹配的项数不定,形式语言基本无法实现)
preg_match_all('#<(d[dt])>\s*([^<]+)#is', $s, $r);
print_r($r);
Array
(
[0] => Array
(
[0] =>
2013

[1] =>
row1

[2] =>
row2

[3] =>
row3

[4] =>
2014

[5] =>
row1

[6] =>
row2

)

[1] => Array
(
[0] => dt
[1] => dd
[2] => dd
[3] => dd

人气教程排行