如何将数组从Zend Dom查询结果传递到表

时间:2013-11-05 10:43:44

标签: php zend-framework zend-dom-query

我正在查询列YEAR,RATING的URL,我想将这两个插入到数据库中。例如。 年度评级 1992 9.2 2000 9 1999年8月 。 。 。 。 。 。 。

所以,我写的脚本如下:

$url = 'BLA BLA ';
$data = file_get_contents($url);
$dom = new Zend_Dom_Query($data);
$year = $dom->query('.secondaryInfo');
$rating = $dom->query('.ratingColumn');

如何将它们插入数据库???

for ( .... What do I have to write here?)

$parse = new Application_Model_Parse();
$parse->createImdb(array(
'rating' => What do I have to write here?
'year' => What do I have to write here?
));

任何帮助都会有用。

谢谢

1 个答案:

答案 0 :(得分:1)

http://framework.zend.com/manual/1.12/en/zend.dom.query.html

所述
  

获得文档后,您可以使用query()queryXpath()方法;每个方法都将返回一个具有任何匹配节点的Zend_Dom_Query_Result对象。

进一步

  

如前所述,Zend_Dom_Query_Result同时实现了IteratorCountable,因此可以在foreach()循环和count()中使用功能

在这种情况下,各种Iterator methods将返回PHP's native DOMElements,这意味着您可以通过它的nodeValue属性访问元素的文本内容。

假设Result对象中只有一个项目,请尝试

$parse->createImdb(
    array(
        'rating' => $rating->current()->nodeValue
        'year' => $year->current()->nodeValue
    )
);

如果您对使用Iterator感到不舒服,可以使用:

,好吧,将迭代器复制到一个数组中,然后使用它,例如

$rating = iterator_to_array($rating);
$year = iterator_to_array($year);
$parse->createImdb(
    array(
        'rating' => $rating[0]->nodeValue
        'year' => $year[0]->nodeValue
    )
);

如果有多个结果,请使用MultipleIterator

一起迭代它们
$ratingsAndYears = new MultipleIterator();
$ratingsAndYears->attachIterator($rating);
$ratingsAndYears->attachIterator($year);

foreach ($ratingsAndYears as $ratingAndYear) {
    $parse = new Application_Model_Parse();
    $parse->createImdb(
        array(
            'rating' => $ratingAndYear[0]->nodeValue
            'year' => $ratingAndYear[1]->nodeValue
        )
    );

在旁注中,Zend_Dom_Query只是PHP本机DOM扩展的一个薄包装,如果你知道XPath,你真的不需要W3选择器查询它提供的而且只用DOM就可以做到这一切。