我正在查询列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?
));
任何帮助都会有用。
谢谢
答案 0 :(得分:1)
如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()
中使用功能
在这种情况下,各种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就可以做到这一切。