用于显示 2 组数据的 Foreach 循环配置
Foreach Loop Configuration for Displaying 2 Sets of Data
我正在使用简单 HTML DOM 从 returns 一页结果的网页获取数据。我想将其格式化为标题,然后是描述。现在我正在使用这个代码:
<?php
include('simple_html_dom.php');
$html = file_get_html('https://www.example.com?q=randomquery');
foreach($html->find('div#resultscontainer') as $data)
//for each title
foreach($data->find('h3') as $title) {
//for each description
foreach($data->find('span.st') as $desc) {
//format code
echo "<div class='result'>";
echo $title;
echo $desc;
echo "</div>";
}
}
?>
现在代码给了我一堆标题,以及这些标题下所有可能的描述。截图:
我希望每个标题都分配给一个正确的描述。如果这看起来很简单,我深表歉意,但我是初学者。欢迎大家帮忙,谢谢。
-- 卡梅隆
你的第二个 foreach 检查完整的 HTML 文件,而不是你的 $title 下面的内容。
你应该这样做:
<?php
//for each title
foreach($data->find('h3') as $title) {
//for each description
foreach($title->parent->find('span.st') as $desc) {
//format code
echo "<div class='result'>";
echo $title->plaintext;
echo $desc->plaintext;
echo "</div>";
}
}
有关更多信息,请参阅 http://simplehtmldom.sourceforge.net/
中的示例
--编辑:因为你给了我们一个屏幕截图而不是你尝试解析的 html(哈哈 ..!)我只能猜测 html 看起来像什么......我编辑了我的回答是查询h3s的兄弟姐妹..
这样试试:
foreach($html->find('div#resultscontainer') as $data) {
$titlesAndDescriptions = array();
// for each title
foreach($data->find('h3') as $key => $title) {
$titlesAndDescriptions[$key] = array('title' => $title);
}
// for each description
foreach($data->find('span.st') as $key => $desc) {
$titlesAndDescriptions[$key]['description'] = $desc;
}
foreach ($titlesAndDescriptions as $titleAndDescription) {
echo "<div class='result'>";
echo $titleAndDescription['title'];
echo $titleAndDescription['description'];
echo "</div>";
}
}
我正在使用简单 HTML DOM 从 returns 一页结果的网页获取数据。我想将其格式化为标题,然后是描述。现在我正在使用这个代码:
<?php
include('simple_html_dom.php');
$html = file_get_html('https://www.example.com?q=randomquery');
foreach($html->find('div#resultscontainer') as $data)
//for each title
foreach($data->find('h3') as $title) {
//for each description
foreach($data->find('span.st') as $desc) {
//format code
echo "<div class='result'>";
echo $title;
echo $desc;
echo "</div>";
}
}
?>
现在代码给了我一堆标题,以及这些标题下所有可能的描述。截图:
我希望每个标题都分配给一个正确的描述。如果这看起来很简单,我深表歉意,但我是初学者。欢迎大家帮忙,谢谢。
-- 卡梅隆
你的第二个 foreach 检查完整的 HTML 文件,而不是你的 $title 下面的内容。
你应该这样做:
<?php
//for each title
foreach($data->find('h3') as $title) {
//for each description
foreach($title->parent->find('span.st') as $desc) {
//format code
echo "<div class='result'>";
echo $title->plaintext;
echo $desc->plaintext;
echo "</div>";
}
}
有关更多信息,请参阅 http://simplehtmldom.sourceforge.net/
中的示例--编辑:因为你给了我们一个屏幕截图而不是你尝试解析的 html(哈哈 ..!)我只能猜测 html 看起来像什么......我编辑了我的回答是查询h3s的兄弟姐妹..
这样试试:
foreach($html->find('div#resultscontainer') as $data) {
$titlesAndDescriptions = array();
// for each title
foreach($data->find('h3') as $key => $title) {
$titlesAndDescriptions[$key] = array('title' => $title);
}
// for each description
foreach($data->find('span.st') as $key => $desc) {
$titlesAndDescriptions[$key]['description'] = $desc;
}
foreach ($titlesAndDescriptions as $titleAndDescription) {
echo "<div class='result'>";
echo $titleAndDescription['title'];
echo $titleAndDescription['description'];
echo "</div>";
}
}