Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
查找特定文本的PHP简单HTML DOM解析器_Php_Simple Html Dom - Fatal编程技术网

查找特定文本的PHP简单HTML DOM解析器

查找特定文本的PHP简单HTML DOM解析器,php,simple-html-dom,Php,Simple Html Dom,试图从这个创建糟糕的HTML格式中获取数据 http://www.weather.gov.sg/lws/zoneInfo.do 我只需要获得3个地方的数据,例如贝多克、城市和加东。 如何将数据存储在数组中 这是我做的,让商店的前5行,这并不完全是我想要的 $row_counter='0'; while($row_counter<5) { $ret['Name'][] = $html->find('.FORM1', $row_counter)->innertext; $ret[

试图从这个创建糟糕的HTML格式中获取数据

http://www.weather.gov.sg/lws/zoneInfo.do
我只需要获得3个地方的数据,例如贝多克、城市和加东。 如何将数据存储在数组中

这是我做的,让商店的前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';
而($row\u counterfind('.FORM1',$row\u counter)->innertext;
$ret['Area'][=$html->find('.FORM1',$row\u counter)->next\u sibling()->innertext;
$ret['Alert'][=$html->find('.FORM1',$row\u counter)->next\u sibling()->next\u sibling()->innertext;
$ret['From'][=$html->find('.FORM1',$row\u counter)->下一个兄弟姐妹()->下一个兄弟姐妹()->下一个兄弟姐妹()->内部文本;
$ret['Till'][=$html->find('.FORM1',$row\u counter)->下一个兄弟姐妹()->下一个兄弟姐妹()->下一个兄弟姐妹()->下一个兄弟姐妹()->内部文本;
$row_计数器++;
}
我能够成功地存储整行和所有列的数据。 搜索某个名称的最有效的方法是什么,例如Bedok,并像next_sibling一样获取其旁边的列


谢谢。

这不容易。先试试看,然后再问。
(:


这段代码没有调试,因为我现在在手机上。但如果不起作用,也许你已经知道了。谢谢。这不容易。先试试,然后再问。
(:


这段代码没有被调试,因为我现在在手机上。但如果不起作用,也许你已经知道了。谢谢

你想要什么数据?我需要有效的起始和有效的截止数据。这只是一个破折号,因为没有闪电风险,但它通常显示在itI中的某个时间我没有正确地理解你。也许我的英语不好。你想得到所有的信息吗数组中的数据?我想要数组中提到的特定区域右侧的数据,例如Bedok,Zone,-,-。您需要什么数据?我需要有效的起始和有效的截止数据。现在只是一个破折号,因为没有闪电风险,但它通常显示itI中的某个时间。我可能英语不好。您想知道吗获取一个数组中的所有数据?我希望数据位于所提到的特定区域的右侧,例如Bedok,Zone,-,在一个数组中。感谢您的友好输入。我不希望您为我写出全部内容。但是,我实际上想探索使用方法查找“Bedok”的可能性,而不是计算它所在的行。共有400行+行。@user2216416:编辑了我的答案。试试这个。让我知道它是否正确。哇,太棒了!非常感谢!它比我的代码效率高。无需等待2分钟就可以显示所有内容。哇!感谢你的善意输入。我不希望你为我写出全部内容。不过,我实际上想探索一下f使用方法查找“Bedok”,而不是计算它所在的行数。那里有400多行。@user2216416:编辑了我的答案。试试这个。让我知道它是否正确。哇,太棒了!非常感谢!它比我的代码效率高得多。无需等待2分钟即可显示所有内容。哇!
<?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];
}