Получить текст вне элементов

Я использую Simple html dom для очистки веб-сайта. Проблема, с которой я столкнулся, заключается в том, что текст помещается вне любого конкретного элемента. Единственный элемент, который, кажется, внутри, – это <div id="content"> .

 <div id="content"> <div class="image-wrap"></div> <div class="gallery-container"></div> <h3 class="name">Here is the Heading</h3> All the text I want is located here !!! <p> </p> <div class="snapshot"></div> </div> 

Я думаю, что веб-мастер перепутался, и текст действительно должен быть внутри тегов <p> .

Я пробовал использовать этот код ниже, но он просто не получит текст:

  $t = $scrape->find("div#content text",0); if ($t != null){ $text = trim($t->plaintext); } 

Я все еще новичок и все еще учился. Может ли кто-нибудь помочь вообще?

Вы почти там … Используйте тестовый цикл для отображения содержимого ваших узлов и найдите индекс требуемого текста. Например:

 // Find all texts $texts = $html->find('div#content text'); foreach ($texts as $key => $txt) { // Display text and the parent's tag name echo "<br/>TEXT $key is ", $txt->plaintext, " -- in TAG ", $txt->parent()->tag ; } 

Вы обнаружите, что вам следует использовать индекс 4 вместо 0 :

 $scrape->find("div#content text",4); 

И если ваш текст не всегда имеет один и тот же индекс, но вы знаете, например, что он следует за заголовком h3 , тогда вы можете использовать что-то вроде:

 foreach ($texts as $key => $txt) { // Locate the h3 heading if ($txt->parent()->tag == 'h3') { // Grab the next index content from $texts echo $texts[$key+1]->plaintext; // Stop break; } }