注意:未定义的偏移量:1

时间:2012-11-22 18:22:56

标签: php parsing

尝试从网站解析价格。我已经可以从源代码中检索标题,但是当我试图降低价格时,我会收到通知。 注意:未定义的偏移量:1 这是代码:

<?php

$file_string = file_get_contents('http://finance.google.com');

preg_match('/<title>(.*)<\/title>/i', $file_string, $title); 
$title_out = $title[1];

preg_match('~<span id="ref_658274_l">(.*)</span>~', $file_string, $price);
//error on the line below 
$price_out = $price[1];

?>

<?php echo "$title_out"; ?>
<?php echo "$price_out"; ?>

2 个答案:

答案 0 :(得分:0)

使用DOMDocument

解析HTML可能会更成功
$doc = new DOMDocument();
$doc->loadHTML(file_get_contents('http://finance.google.com'));

$titleElems = $doc->getElementsByTagName('title');
if ($titleElems->length) {
  $title = $titleElems->item(0)->nodeValue;
}

$priceElem = $doc->getElementById('ref_658274_l');
if ($priceElem != null) {
  $price = $priceElem->nodeValue;
}

答案 1 :(得分:0)

您的正则表达式不匹配。使用结果时,您应始终验证您使用的索引(在本例中为1)是否在array的范围内。