为每个解析器结果生成唯一的div id

时间:2014-03-27 09:05:08

标签: php html simple-html-dom

以下是代码:

<?php 

    require_once 'simple_html_dom.php';
    $url = "website.com";

    $data = file_get_html($url);


    $search = $data->find("div.box_rezult");

    if($data->innertext!="" and $search ){
        foreach($search as $box_rezult){

            // Get lottery name
            echo $box_rezult->find("td.lottery_name", 0)->plaintext;
            echo "<br/>";

            // Get date
            echo $box_rezult->find("td.lottery_text", 0)->plaintext;
            echo "<br/>";

            // get the table of all results
            $table = $box_rezult->find("table.last-draw-table", 0);

            // get winning numbers
            echo $table->children(2)->children(0)->plaintext;
            echo "<br/>";

            if (!isset( $table->children(2)->children(1)->plaintext )) {
            }
            else

            echo $table->children(2)->children(1)->plaintext, '<br/>';
            echo "<br/>";

        }
    }



    $data->clear();
    unset($data);

    ?>

结果是这样的:

Headline
Data
Text1
Text2

Headline
Data
Text1
Text2

等等。我需要的是每个结果的唯一div id以应用自定义样式。像这样:

<div id="header_1" class="headings">
Headline
Data
Text1
Text2

标题 数据 文本1 文本2

我用这个:

if($data->innertext!="" and $search ){
    foreach($search as $box_rezult){
    $index = 0;

        // Get lottery name
        echo  "<div id=\"header_".$index."\" class=\"headings\">".$box_rezult->find("td.lottery_name", 0)->plaintext."</div>";
        echo "<br/>";
....
....

$index++;

但每次我得到div id="header**_0**" class="headings">。请更正代码。

另外一个问题是如何隐藏孩子(1)第4个结果的文本(如果存在)。

谢谢!

2 个答案:

答案 0 :(得分:0)

如果我查看你的最后一个代码块,我会看到&#34; $ index ++;&#34;是在foreach之外。

放置&#34; $ index = 0;&#34;在foreach和&#34; $ index ++;&#34;在foreach里面增加它。

答案 1 :(得分:0)

您想要枚举$ search。删除$index的当前增量和初始化并使用

foreach($search as $index => $box_rezult){