【发布时间】:2014-07-16 11:05:31
【问题描述】:
有点问题。我正在尝试使用 preg_match_all 但有些正则表达式不适用于其中一种情况。
<tr>
<td class="FieldTitle" valign="top">EAN code:</td>
<td class="Field" valign="top">3838942897078</td>
</tr>
上面的代码是在变量$html中
$table_html = $html;
preg_match_all("'EAN code:</td>\s*<td class=\"Field\" valign=\"top\">(.*?)</td>'si",$table_html,$extract);
$ean = $extract[1][0];
return $ean;
这将返回 3838942897078。这是正确的,但不同场景的相同代码给出了 $extract 的 var_dump 的空数组。这确实意味着我没有找到任何匹配项。
<div class="Field"><span class="Title">Dimensions of the product (W×H×D): </span>60 × 152,4 × 64 cm</div>
以上是在$html中
以下代码:
$table_html = $html;
preg_match_all("'Dimensions of the product (W×H×D):</span>(.*?)</div>'si",$table_html,$extract);
var_dump($extract);
这表明在转储中该数组为空。有人可以对这个问题有所了解。我已经尝试过 preg_match 和 preg_match_all 都没有运气。非常感谢您的帮助。提前致谢
【问题讨论】:
-
停止使用正则表达式解析 HTML。使用DOM parser
-
您为什么希望它们匹配?你知道你的正则表达式匹配什么吗?您还知道使用适当的 HTML 解析器会更好吗?
-
尝试为多行添加
m修饰符到正则表达式(...'si⇒...'sim)。 -
大家好...感谢您的评论。好吧,我是解析的 N00b。昨天在 DOM 上经过近 5 小时的反复试验。我确实放弃了缺乏清晰的文档来通过。并建议一个好的基础教程?
标签: php regex preg-match preg-match-all