【发布时间】:2014-02-05 07:11:24
【问题描述】:
我在我的 PHP 脚本中使用 PHP Simple HTML DOM Parser 将来自网站的信息解析为 JSON 对象。我的 JSON 对象最后应该这样格式化:
最多包含 5 个对象(周一至周五)或更少(周二至周五等)的数组。
所有这些对象都应该有两个数组,一个叫food1,一个叫food 2。这两个数组都应该包含多个食物名称及其价格。我认为在 JSON 中它看起来像这样:
{
"day" : [
{
"food1" : [
{
"price" : "1.00",
"foodname" : "test"
},
{
"price" : "1.00",
"foodname" : "test"
}
],
"food2" : [
{
"price" : "2.00",
"foodname" : "test2"
},
{
"price" : "2.00",
"foodname" : "test2"
}
]
},
{
"food1" : [
{
"price" : "1.00",
"foodname" : "test"
},
{
"price" : "1.00",
"foodname" : "test"
}
],
"food2" : [
{
"price" : "2.00",
"foodname" : "test2"
},
{
"price" : "2.00",
"foodname" : "test2"
}
]
},
{
"food1" : [
{
"price" : "1.00",
"foodname" : "test"
},
{
"price" : "1.00",
"foodname" : "test"
}
],
"food2" : [
{
"price" : "2.00",
"foodname" : "test2"
},
{
"price" : "2.00",
"foodname" : "test2"
}
]
},
{
"food1" : [
{
"price" : "1.00",
"foodname" : "test"
},
{
"price" : "1.00",
"foodname" : "test"
}
],
"food2" : [
{
"price" : "2.00",
"foodname" : "test2"
},
{
"price" : "2.00",
"foodname" : "test2"
}
]
},
{
"food1" : [
{
"price" : "1.00",
"foodname" : "test"
},
{
"price" : "1.00",
"foodname" : "test"
}
],
"food2" : [
{
"price" : "2.00",
"foodname" : "test2"
},
{
"price" : "2.00",
"foodname" : "test2"
}
]
}
]
}
无论如何,我以前只使用过 Objective-C,并且在用 PHP 解决这个问题时遇到了问题。我还在 Objective-C 中实现了一个可以工作的解析器,但是如果站点改变了它们的结构,我将不得不重新提交整个应用程序等。这就是为什么我想制作一个 Web 服务,我可以在其中动态更改解析器之外应用程序。我得到的只有这个:
<?php
include('simple_html_dom.php');
$opts = array('http'=>array('header' => "User-Agent:MyAgent/1.0\r\n"));
$context = stream_context_create($opts);
$html = file_get_html('http://www.studentenwerk-karlsruhe.de/de/essen/?view=ok&STYLE=popup_plain&c=erzberger&p=1&kw=3',false,$context);
foreach($html->find('b') as $e)
echo $e;
?>
这给了我所有的食物名称,但它没有按天排序,也没有按不同的食物菜单排序(在我的示例 JSON 中,每天有两个不同的菜单称为 food1 和 food2对象)。
在我的 Objective-C 解析器中,当食物名称为“SchniPoSa”时,我刚刚创建了一个新的 day 对象,并将以下所有食物名称添加到 food1,直到出现食物名称“Salatbuffet”以及以下所有食物我添加到food2 数组中的名称,直到出现下一个“SchniPoSa”食物名称。但这不是很好,因为结构可能每天都在变化。
另外,我什至不知道如何在 PHP 中实现它。在我的小 PHP 脚本中,我也不解析标签 <span class="bgp price_1"> 中的所有价格。
这是我要从中解析信息的网站:
http://www.studentenwerk-karlsruhe.de/de/essen/?view=ok&STYLE=popup_plain&c=erzberger&p=1&kw=3
是否有人可以帮助我解析有效 JSON 对象中的信息,如下所述?
【问题讨论】:
-
如果网站以任何方式更改其布局,您将不得不更改您的代码,使用此方法可能没有“最终”版本..
-
当然可以,但我可以更改我的 php web 服务上的代码。我不会(取决于更改)必须更改我的 Objective-C 代码。因此,每次有一点变化时,我都不必提交应用程序更新。同样这样我可以将网络服务公开给一些可能想要访问信息的人..
-
是的,你可以有一个 Web 服务,它只是标准化返回对象.. 将查看一个类并稍后返回给你..
-
有什么提示吗?