正则表达式在特定方案中的PHP正则表达式问题

时间:2014-07-16 11:05:31

标签: php regex preg-match preg-match-all

有一点问题。我正在尝试使用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&#215;H&#215;D): </span>60 &#215; 152,4 &#215; 64 cm</div>

以上是$ html

以下代码:

$table_html = $html;
preg_match_all("'Dimensions of the product (W&#215;H&#215;D):</span>(.*?)</div>'si",$table_html,$extract);
var_dump($extract);

这表明在转储中该数组为空。有人可以对这个问题有所了解。我已经尝试了preg_match和preg_match_all但没有运气。非常感谢帮助。在此先感谢

1 个答案:

答案 0 :(得分:0)

这对我有用:

$table_html = $html;
preg_match_all("'Dimensions of the product \(W&#215;H&#215;D\): </span>(.*?)</div>'si",$table_html,$extract);
var_dump($extract);

您需要使用反斜杠W&#215;H&#215;D转义\周围的括号。

正如谢尔盖所​​说,你的模式中也有一个</td>,应该用一个空格替换,以匹配你的HTML字符串。