我有一个抓取数据的代码 -
$doc = new DOMDocument();
$internalErrors = libxml_use_internal_errors(true);
$doc->loadHTMLFile($url);
// Restore error level
libxml_use_internal_errors($internalErrors);
$xpath = new DOMXpath($doc);
$result=array();
$link = $xpath->query($linkPath);
$title = $xpath->query($titlePath);
$desc = $xpath->query($descPath);
for ($i=0; $i < $link->length; $i++) {
if (!is_null($link)) {
$result['link'][] = $link[$i]->getAttribute('href');
}
if (!is_null($title)) {
$str = $title[0]->nodeValue;
$result['title'][] = $title[$i]->nodeValue;
}
if (!is_null($desc)) {
$str = $desc[0]->nodeValue;
$result['desc'][] = $desc[$i]->nodeValue;
}
echo "<br> ----------------";
}
print_r($result);
结果如:
<br> ----------------
<br> ----------------
<br> ----------------
<br> ----------------
<br> ----------------
Array
(
[link] => Array
(
[0] => http://1.com
[1] => http://2.com
[2] => http://3.com
)
[title] => Array
(
[0] => Lorem ipsum dolor sit amet
[1] => Lorem ipsum dolor sit amet
[2] => Lorem ipsum dolor sit amet
)
[desc] => Array
(
[0] => Lorem ipsum dolor sit amet
[1] => Lorem ipsum dolor sit amet
[2] => Lorem ipsum dolor sit amet
)
)
但我想要的结果如下:
Array
(
[0] => Array
(
[link] => http://1.com
[title] => Lorem ipsum dolor sit amet
[desc] => Lorem ipsum dolor sit amet
)
<br> ----------------
[1] => Array
(
[link] => http://2.com
[title] => Lorem ipsum dolor sit amet
[desc] => Lorem ipsum dolor sit amet
)
<br> ----------------
[2] => Array
(
[link] => http://3.com
[title] => Lorem ipsum dolor sit amet
[desc] => Lorem ipsum dolor sit amet
)
<br> ----------------
)
我使用$result['field'][]
,如果使用result['field']
仅在循环时获得最终行。
我不知道如何像格式之前一样保存数据。 我需要像这样的数组显示,因为每个数组都是新闻。
答案 0 :(得分:2)
如下所示: -
for ($i=0; $i < $link->length; $i++) {
if (!is_null($link)) {
$result[$i]['link'] = $link[$i]->getAttribute('href'); // will produce like $result[0]['link']
}
if (!is_null($title)) {
$str = $title[0]->nodeValue;
$result[$i]['title'] = $title[$i]->nodeValue;// will produce like $result[0]['title']
}
if (!is_null($desc)) {
$str = $desc[0]->nodeValue;
$result[$i]['desc'] = $desc[$i]->nodeValue;// will produce like $result[0]['index']
}
echo "<br> ----------------";
}
答案 1 :(得分:0)
$arrayofcol=array(1=>"link",2=>"title",3=>"desc");
$title=$desc=$link;
$result = array();
$data=$arrayofcol[1];
$new_program=$$data;
print_r($new_program);
你会得到预期的结果。