我查询列YEAR,评级为A URL,我要插入这两个到数据库中。 如YEAR RATING 1992年9.2 2000 1999年9 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?
));
任何帮助将是有益的。
谢谢
截至解释http://framework.zend.com/manual/1.12/en/zend.dom.query.html
一旦你有一个文件,你可以使用的query()
或queryXpath()
方法; 每个方法将返回一个Zend_Dom_Query_Result
对象与任何匹配的节点。
并进一步
如前所述, Zend_Dom_Query_Result
同时实现了Iterator
和Countable
,因此可以在使用foreach()
循环以及与所述count()
函数。
各种迭代方法将返回PHP的原生DOMElements在这种情况下,这意味着通过它可以访问元素的文本内容nodeValue
属性。
假设有在结果对象只有一个项目,尝试
$parse->createImdb(
array(
'rating' => $rating->current()->nodeValue
'year' => $year->current()->nodeValue
)
);
如果你觉得不舒服的迭代器工作时,你可以使用:
-
iterator_to_array
-迭代器复制到一个数组
到,那么,复制迭代到一个数组,然后使用该代替,例如
$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独自做到这一切。