2014-03-28 55 views
1

所以我有一個代碼,這是一個div類的內部和DIV類有一個文本和一個跨度與其他文本,所以我需要得到內容,但不是裏面是什麼內部跨度和跨度。獲取裏面的div內容,但跳過<span>該div simple_html_dom內

基本上這是代碼

<div class="somecontent"> 
    23:45 
    <span>Tags: 
     <a href="link to somewhere"> tag1</a> 
     <a href="link to somewhere"> tag1</a> 
     <a href="link to somewhere"> tag1</a> 
    </span> 
</div> 

所以我不需要裏面有什麼跨度和這些鏈接。我只需要有這個

23:45 

基本上我只是需要得到的視頻時間。

和IM抓住與simple_html_dom所以我的解決辦法,如果有人知道什麼樣的頁面?

+0

看看下面這個@pguarianrio回答哪個問題解決了這個問題。 http://stackoverflow.com/questions/22631484/html-dom-parser-get-first-element/22632599#22632599 – Gunaseelan

+0

如果你提供你在哪裏刮數據的URL,我們可能會發現,其確切的問題存在? – Gunaseelan

回答

0

你可以做到以下幾點:

$doc = str_get_html($html); 

foreach ($doc->find('div.somecontent') as $parent) { 
    foreach ($parent->find('text') as $node) { 
     if ($node->parent() === $parent) { 
      echo trim($node->plaintext); 
     } 
    } 
} 

這變得更容易,如果你正在使用PHP的內置DOMDocument類。你可以簡單地使用XPath表達式來獲取你所需要的文字:

$doc = new DOMDocument; 
$doc->loadHTML($html); 
$xpath = new DOMXPath($doc); 

foreach ($xpath->query('//div/text()') as $node) { 
    echo trim($node->textContent); 
} 

XPath表達式//div/text()發現是<div>內的所有文本節點。

+0

如果你有時候希望你能使用XPath用簡單的HTML DOM你可能會喜歡[項目](https://sourceforge.net/projects/advancedhtmldom/) - 它可以讓你做的事:'$ doc->找到('// div/text()')' - 我個人比較喜歡css。 – pguardiario

1

您需要的信息:

$html->find('.somecontent text', 0); 
+0

這不起作用。 –

0

這爲我工作作爲解決方案。

首先我得到的所有文字裏面跨度,比我使用str_replace函數來獲得somecontent寫入類中的所有文本並替換內跨越一個空。

   $get_duration = $video->find('div[class="somecontent"]', 0)->children(0); 
       $video_duration = str_replace($get_duration, '', $video->find('div[class="somecontent"]', 0)->innertext);