Intereting Posts

Рекурсия с использованием PHP Simple DOM Parser

По какой-то причине я получаю рекурсию при использовании Simple DOM Parser Library.

Мой HTML-код

<div id="root"> <div class="some_div">some text</div> <div class="field_1 misc1"><a href="#">Some text link</a> <strong>15</strong></div> <div class="field_2 misc2"><a href="#">Some text link</a> <strong>25</strong></div> </div> 

Я создал PHP-скрипт, включая один файл

 include_once('simple_html_dom.php'); 

И я пытаюсь получить 15 и 25 значений из HTML выше. Но когда я бегу

 $ret = $html->find('div[id=root]'); print_r($ret); 

мой скрипт возвращает много рекурсий – что я делаю неправильно и как я могу получить эти 15 и 25 значений правильно?

Не используйте print_r() или var_dump() для объектов DOM. Объект DOM имеет свойства, которые относятся к его дочерним и родительским объектам. Поэтому, когда он печатает дочерний элемент, ему необходимо распечатать его родительское свойство. И когда он печатает родителя, ему нужно снова напечатать дочерний элемент, чтобы он попал в бесконечную рекурсию.

Если вы хотите получить 15 и 25 , вы должны использовать селектор, который соответствует этим элементам. Затем проведите через результаты и распечатайте текст.

 $ret = $html->find('#root strong'); foreach ($ret as $field) { echo $field->plaintext; }