我是编程新手。所以我选择使用Wordpress构建一个网页。但我正在尝试从其他网站收集天气数据,我找不到适合抓取数据的插件,并决定试一试并自己整理一些东西。 但由于我对编程的理解有限,这给了我一些问题。通过网络上的一些灵感,我把它们放在一起:
$html = file_get_contents('http://www.frederikshavnhavn.dk/scripts/weatherwindow.php?langid=2'); //get the html returned from the following url
$poke_doc = new DOMDocument();
libxml_use_internal_errors(false); //disable libxml errors
if(!empty($html)){ //if any html is actually returned
$poke_doc->loadHTML($html);
libxml_clear_errors(); //remove errors for yucky html
$poke_xpath = new DOMXPath($poke_doc);
//get all the spans's with an id
$poke_type = $poke_xpath->query("//span[@class='weathstattype']");
$poke_text = $poke_xpath->query("//span[@class='weathstattext']");
foreach($poke_text as $text){
foreach($poke_type as $type){
echo $type->nodeValue;
echo $text->nodeValue . "</br>";
continue 2;
}
break;
}
}
因为这对我来说是全新的,我真的想让这个为我工作,希望能更好地理解作品背后的代码。
我想要实现的是带有数据的格式化列表。 1. value $ type $ text 2.值$ type $ text
现在它给我带来了很多麻烦。 当我使用continue 2时,它不会更改值$ type,但是当我只使用continue语句时,它会更改$ type但不会更改$ text。我怎样才能让它每次都改变这两个值?
感谢您的帮助。
答案 0 :(得分:1)
尝试添加此方法:
function get_inner_html( $node ) {
$innerHTML= '';
$children = $node->childNodes;
foreach ($children as $child) {
$innerHTML .= $child->ownerDocument->saveXML( $child );
}
return $innerHTML;
}
然后用这个替换foreach:
foreach($poke_text as $text){
//echo $type ->nodeValue . "</n>";
echo get_inner_html($text ).'<br>';
}
foreach($poke_type as $type){
//echo $text ->nodeValue;
echo get_inner_html($type ).'<br>';
}
产生这个:
答案 1 :(得分:0)
你的代码中的伙伴你的foreach循环(在最后)你使用$ type作为$ text和$ text作为$ type ..我运行代码只是改变变量,因为它们应该是它的工作正常..
$html = file_get_contents('http://www.frederikshavnhavn.dk/scripts/weatherwindow.php?langid=2'); //get the html returned from the following url
$poke_doc = new DOMDocument();
libxml_use_internal_errors(false); //disable libxml errors
if(!empty($html)){ //if any html is actually returned
$poke_doc->loadHTML($html);
libxml_clear_errors(); //remove errors for yucky html
$poke_xpath = new DOMXPath($poke_doc);
//get all the spans's with an id
$poke_type = $poke_xpath->query("//span[@class='weathstattype']");
$poke_text = $poke_xpath->query("//span[@class='weathstattext']");
foreach($poke_text as $text){
echo $text->nodeValue;
}
foreach($poke_type as $type){
echo $type->nodeValue;
}
}
这就是我从你的代码中获得的(通过改变循环中的变量)
196°(Syd)5.6°C 4.1 m / s 5 m / s -6 cm 1004 hPa Vindretning Lufttemperatur Middel vindhastighed Max vindhastighed Vandstand Lufttryk
现在您拥有自己的数据我认为您可以管理如何对它们进行排序......