有一点问题。我正在尝试使用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但没有运气。非常感谢帮助。在此先感谢
答案 0 :(得分:0)
这对我有用:
$table_html = $html;
preg_match_all("'Dimensions of the product \(W×H×D\): </span>(.*?)</div>'si",$table_html,$extract);
var_dump($extract);
您需要使用反斜杠W×H×D
转义\
周围的括号。
正如谢尔盖所说,你的模式中也有一个</td>
,应该用一个空格替换,以匹配你的HTML字符串。