【发布时间】:2013-04-18 19:46:30
【问题描述】:
我似乎无法掌握 php 中的正则表达式。具体来说就是群抓部分。
我有一个看起来像这样的字符串
<table cellpadding="0" cellspacing="0" border="0" width="100%" class="List">
<tr class='row_type_1'>
<td class="time">
3:45 pm
</td>
<td class="name">
Kira
</td>
</tr>
<tr class='row_type_2'>
<td class="time">
4:00 pm
</td>
<td class="name">
Near
</td>
</tr>
</table>
我希望我的数组看起来像这样
Array
(
[0] => Array
(
[0] => 3:45 pm
[1] => Kira
)
[1] => Array
(
[0] => 4:00 pm
[1] => Near
)
)
我只想使用 preg_match,而不是explode,array_keys 或循环。我花了一段时间才发现我需要一个 /s 来表示 .* 来计算换行符;我真的很想看看这个模式和捕获语法。
编辑:该模式只需要 (row_type_1|row_type_2) 之类的东西来捕获我想要从中获取数据的表中仅有的两种类型的行。例如,在 row_type_2 之后是 row_type_3,然后是 row_type_1,然后 row_type_3 将被忽略,数组只会添加来自 row_type_1 的数据,如下所示。
Array
(
[0] => Array
(
[0] => 3:45 pm
[1] => Kira
)
[1] => Array
(
[0] => 4:00 pm
[1] => Near
)
[2] => Array
(
[0] => 5:00 pm
[1] => L
)
)
【问题讨论】:
-
永远不要使用正则表达式处理 HTML,而是使用 DOM 解析器。
-
您能说出原因吗?
-
@SatbirKira:因为你不会做对。并且对您的标记进行最轻微的更改,您的正则表达式就会被破坏。使用 HTML 解析器。
-
你是绝对正确的。谢谢。
标签: php html regex multidimensional-array preg-match