HTML SIMPLE DOM的几个例子

时间:2013-07-22 14:57:29

标签: php html date dom

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

第1个问题:

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,是否可能?

第3个问题(最后一个: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)

1 个答案:

答案 0 :(得分: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 />";
}

结果将是

enter image description here