Parse HTML no PHP e retorna JSON

Estou usando PHP Simple HTML DOM Parser no meu script PHP para analisar informações de um site em um object JSON. Meu object JSON deve ser formatado como este no final:

Armazene com o máximo de 5 objects (de segunda a sexta-feira) ou menos (de terça a sexta-feira, etc).

Todos esses objects devem ter dois arrays, um chamado food1 e um chamado food 2 . Ambos os arrays devem conter vários nomes de alimentos e seus preços. Eu acho que em JSON seria assim:

  { "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" } ] } ] } 

Enfim, eu apenas trabalhei com o Objective-C e tive problemas para resolver este problema em PHP. Eu também implementei um analisador no Objective-C que funciona, mas se o site alterar sua estrutura, eu teria que reenviar a aplicação inteira, etc. Por isso, eu queria fazer um serviço web onde eu possa mudar dinamicamente o analisador fora de a aplicação. Tudo o que tenho é o seguinte:

 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; ?> 

O que me dá todos os nomes de comida, mas não está ordenado para os dias e também não para os diferentes menus de comida (há dois menus diferentes em cada dia que são chamados de food2 e food2 no meu exemplo de object JSON).

No meu analisador Objective-C, acabei de criar um novo object de dia quando o nome do alimento é “SchniPoSa” e adicionei todos os seguintes nomes de comida ao alimento1 até chegar o nome do alimento “Salatbuffet” e todos os seguintes nomes de comida que adicionei ao food2 até o próximo nome de comida “SchniPoSa”. Mas isso não é muito bom porque a estrutura pode mudar todos os dias.

Além disso, eu nem sei como implementar isso em PHP. No meu pequeno script PHP, eu também não analisa todos os preços que estão na tag .

Aqui está o site do qual eu quero analisar as informações:

http://www.studentenwerk-karlsruhe.de/de/essen/?view=ok&STYLE=popup_plain&c=erzberger&p=1&kw=3

Existe alguém que possa me ajudar a analisar as informações em um object JSON válido, como descrevi abaixo?

Acabei de ver sua mensagem e percebi que não tinha conseguido voltar para você sobre isso. Talvez isso o leve à direção certa:

 array('header' => "User-Agent:MyAgent/1.0\r\n")); $context = stream_context_create($opts); $html = file_get_contents('http://www.studentenwerk-karlsruhe.de/de/essen/?view=ok&STYLE=popup_plain&c=erzberger&p=1&kw=3',false,$context); libxml_use_internal_errors(true); $dom = new DomDocument; $dom->loadHTML($html); $xpath = new DomXPath($dom); $nodes = $xpath->query("//table[@class='easy-tab-dot']"); //header("Content-type: text/plain"); foreach ($nodes as $i => $node) { $arr = array(); $children = $node->childNodes; foreach ($children as $child) { $tmp_doc = new DOMDocument(); $tmp_doc->appendChild($tmp_doc->importNode($child,true)); #echo $tmp_doc->saveHTML(); print_r( $child ); } echo "#######################################################################################"; }