2017-02-09 12 views
2

Я пытаюсь получить содержимое тега ul с несколькими именами классов. Тот же синтаксис работает для тегов div, но не может заставить его работать с тегом ul ниже. Он просто возвращает пустой массив.simple html dom ul class

<html> 
    <div> 
    <div> 
     <div> 
     <ul class="set-left farm margin-exclude"> 
      <li> 
      <a href="#">Text</a> 
      </li> 
     </ul> 
     </div> 
    </div> 
    </div> 
</html> 

Ниже приводится только пустой массив.

$html->find('ul[class=set-left farm margin-exclude]'); 
+1

Отметьте этот ответ: http://stackoverflow.com/questions/14264525/php-simple-html-dom-parser-select-only-divs-with-multiple-classes Кажется, что вы должны найти один класс и проверить список результатов со вторым и т. д. –

ответ

2

У меня есть этот рабочий код на моем конце: -

file.txt: -

<html> 
    <div> 
    <div> 
     <div> 
     <ul class="set-left farm margin-exclude"> 
      <li> 
      <a href="#">Text</a> 
      </li> 
     </ul> 
     <ul class="set-left farm margin-exclude"> 
      <li> 
      <a href="#">Text2</a> 
      </li> 
     </ul> 
     </div> 
    </div> 
    </div> 
</html> 

query.php: -

<?php 
error_reporting(E_ALL); 
ini_set('display_errors',1); 
include_once('simple_html_dom.php'); // this is parser file 
$html = file_get_html('file.txt'); 


$level_items = $html->find('*[class="set-left farm margin-exclude"]'); 

foreach ($level_items as $item) { 
    echo $item; 
} 

Выход в браузере: - http://i.share.pho.to/92745ee0_o.png

Примечание: - скачать парсер файл здесь: - https://sourceforge.net/projects/simplehtmldom/files/

Вы можете использовать другой способ, как: -

$html->find('ul.set-left'); 

ИЛИ

$html->find('.set-left.farm.margin-exclude'); 

OR

$html->find('*[set-left.farm.margin-exclude]'); 
+0

Это возвращает все элементы, содержащие это имя класса. Я хотел бы быть более конкретным и настраивать только те классы в одном и том же теге. – user3604481

+0

К сожалению, я хочу найти тег ul, который содержит все эти древовидные классы (set-left farm margin-exclude). Не только set-left. – user3604481

+0

Возвращает пустой массив, douple/triple проверяет имена тегов. это уже несколько часов. :( – user3604481

2

Это должно сделать трюк

$html->find('ul.set-left.farm.margin-exclude'); 
+0

Все еще пустой массив :( – user3604481

+0

вы уверены, что правильно написали классы в своем html, так как это был бы правильный способ найти что-то с несколькими классами. – Cashbee

+0

Странно, получив пустой массив, как только я добавлю второй класс :(Работает только с одним указанным классом. – user3604481