我在我的PHP腳本中使用PHP Simple HTML DOM Parser將信息從網站解析爲JSON對象。我的JSON對象最後應該像這樣格式化:在PHP中解析HTML並返回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;
?>
這給了我所有的食物名稱,但它是沒有排序的天,也沒有對不同食物的菜單(也有每一天被稱爲food1
兩個不同的菜單在我的示例JSON對象中爲food2
)。
在我的Objective-C的解析器我剛剛創建了一個新的一天對象的時候,食品的名稱是「SchniPoSa」,並補充以下所有食品名稱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服務公開給一些可能想訪問這些信息的人.. – dehlen
這是真的,你可以有一個Web服務,只是標準化返回對象..將看着一個類,然後回來給你以後.. –