0

我对 html 简单 dom 有一些问题,不知道如何获取一些特定数据,我阅读手册并自己尝试,但看起来我错过了一些东西,所以希望有人能帮助我。

第一个问题:

HTML:

<div>
                        <h4>Režie:</h4>
                        <span data-truncate="60">
                            <a href="/tvurce/3074-ridley-scott/">Ridley Scott</a>
                        </span>
                    </div>
                    <div>
                        <h4>Scénář:</h4>
                        <span data-truncate="60">
                            <a href="/tvurce/50383-william-monahan/">William Monahan</a>
                        </span>
                    </div>
                    <div>
                        <h4>Kamera:</h4>
                        <span data-truncate="60">
                            <a href="/tvurce/66939-john-mathieson/">John Mathieson</a>
                        </span>
                    </div>
                    <div>
                        <h4>Hudba:</h4>
                        <span data-truncate="60">
                            <a href="/tvurce/62400-harry-gregson-williams/">Harry Gregson-Williams</a>
                        </span>
                    </div>

我的PHP代码:

$ret = $html->find('span[data-truncate*="60"]');                        //rezia

foreach ($ret as $rezia) {
  echo "rezia <br/>";
  }

但是这段代码只打印了所有这个名字的名字和一个href,我需要的只是在“REŽIE”(Ridley Scott)和“Scénář”(William Monahan)下的名字

第二个问题HTML:

<div id="rating">
        <h2 class="average">71%</h2>
        <p class="charts">

PHP代码:

$percenta = $html->find('h2[class*="average"]');                        //pocet ˇ%

foreach ($percenta as $hodnotenie) {
    echo "$hodnotenie";
      }

我从中得到的是 71%,我只想要数字,而不是 HTML,这可能吗?

第三题(最后一题:P):

HTML:

<table>

                    <tr>
                        <th>
                            V kinech ČR
                             od:
                                                    </th>
                        <td class="date">
                            06.05.2005 
                        </td>
                    </tr>

                    <tr>
                        <th>
                            V kinech SR
                             od:
                                                    </th>
                        <td class="date">
                            05.05.2005 
                        </td>
                    </tr>

                    <tr class="separator">
                        <th>
                            Na DVD
                             od:
                                                    </th>
                        <td class="date">
                            01.10.2005 Bonton
                        </td>
                    </tr>

PHP代码:

$ret = $html->find('td[class="date"]');

$kino = array();
foreach ($ret as $kino) {
    $datum[] = $datum->innertext;
    } 

   echo "$datum[0]"; 

我没有得到输出,我不知道我的代码有什么问题。我只想得到那个日期(所以应该是 06.05.2005、05.05.2005、01.10.2005)

4

1 回答 1

3

你没有加载html,看看这个

$html = str_get_html('Some text bla bla bla bla<br /><b>Date</b>: 2012-12-13<br /><br /><b>Name</b>: Peter Novak<br /><b>Hobby</b>: books,cinema,facebook');
foreach($html->find('text') as $t){
    if(substr($t, 0, 1)==':')
    {
        // do whatever you want
        echo substr($t, 1).'<br />';
    }
}

输出将是

2012-12-13
Peter Novak
books,cinema,facebook

另外,检查这个以加载远程站点的内容

$html = file_get_html('http://heera.it');
// Find all article blocks
foreach($html->find('div.post-entry') as $article) {
    echo $article->find('div.post-entry-content h2 a', 0) . '<br />';
    echo $article->find('div.post-entry-content p', 0)->plaintext. '<br />';
    echo "<hr />";
}

结果将是

在此处输入图像描述

于 2013-07-22T15:07:35.337 回答