PHP Простой HTML DOM Parser, который находит конкретный текст

Попытка получить данные из этого плохо созданного формата HTML

http://www.weather.gov.sg/lws/zoneInfo.do 

Все, что мне нужно – это получить данные для 3-х мест, например, Bedok, City и Katong. Как хранить данные в массиве для этого?

Это то, что я сделал, чтобы получить в магазине первые 5 строк, что не совсем то, что я хочу.

 $row_counter='0'; while($row_counter<5) { $ret['Name'][] = $html->find('.FORM1', $row_counter)->innertext; $ret['Area'][] = $html->find('.FORM1', $row_counter)->next_sibling()->innertext; $ret['Alert'][] = $html->find('.FORM1', $row_counter)->next_sibling()->next_sibling()->innertext; $ret['From'][] = $html->find('.FORM1', $row_counter)->next_sibling()->next_sibling()->next_sibling()->innertext; $ret['Till'][] = $html->find('.FORM1', $row_counter)->next_sibling()->next_sibling()->next_sibling()->next_sibling()->innertext; $row_counter++; } в $row_counter='0'; while($row_counter<5) { $ret['Name'][] = $html->find('.FORM1', $row_counter)->innertext; $ret['Area'][] = $html->find('.FORM1', $row_counter)->next_sibling()->innertext; $ret['Alert'][] = $html->find('.FORM1', $row_counter)->next_sibling()->next_sibling()->innertext; $ret['From'][] = $html->find('.FORM1', $row_counter)->next_sibling()->next_sibling()->next_sibling()->innertext; $ret['Till'][] = $html->find('.FORM1', $row_counter)->next_sibling()->next_sibling()->next_sibling()->next_sibling()->innertext; $row_counter++; } 

Я могу успешно хранить данные для всей строки и всех столбцов. Каков наиболее эффективный способ поиска определенного имени, например, Bedok и получения столбцов рядом с ним, как next_sibling?

Благодарю.

Related of "PHP Простой HTML DOM Parser, который находит конкретный текст"

Это не легко. Сначала попробуйте, затем спросите. (:

 <?php include 'simple_html_dom.php'; $html = file_get_html('http://www.weather.gov.sg/lws/zoneInfo.do'); $n = 0; $table = $html->find('table',3)->find('table',0)->find('table',0)->find('table',0)->find('table',3)->find('table',0); $i = -3; $rows = $table->find('tr'); $holder = array(); foreach($rows as $element){ $i++; if($i < 0) continue; $holder[$i]['name'] = $element->find('td',0)->plaintext; $holder[$i]['zone_or_school'] = $element->find('td',1)->plaintext; $holder[$i]['risk'] = $element->find('td',2)->plaintext; $holder[$i]['from'] = $element->find('td',3)->plaintext; $holder[$i]['till'] = $element->find('td',4)->plaintext; } var_dump($holder); ?> 

если вы хотите получить конкретные данные, вы можете отфильтровать его:

 foreach($holder as $key => $val) { if($holder[$key]['name']=='Bedoc') $my_data = $holder[$key]; } 

этот код не отлаживается, потому что я сейчас на мобильном телефоне. Но, возможно, у вас есть идея, если не работает. благодаря