find('div[id=parent] pre')
находит все теги pre
в указанном div
и не заботится о том, что один из них заключен в другой div
, поэтому вот несколько предложений:
Если вы точно знаете, какой pre
вы хотите получить, просто укажите число, считая с нуля, в вашем случае:
$div_content = $page_contents->find('div[id=parent] pre', 1)->innertext;
в случае, если вы не знаете, сколько pre
существует, или не знаете порядок, вы можете просто удалить тот, который вам не нужен, и затем выполнить предыдущую строку, но на этот раз, указав число 0:
$page_contents->find('div[id=parent] div[id=nested] pre', 0)->outertext = '';
$div_content = $page_contents->find('div[id=parent] pre', 0)->innertext;
и если вы не хотите изменять $page_contents
, просто назначьте своего родителя div
временной переменной и сделайте, как указано выше:
$temp = $page_contents->find('div[id=parent]', 0);
$temp->find('div[id=nested] pre', 0)->outertext='';
$div_content = $temp->find('pre', 0)->innertext;
Конечно, есть много других способов сделать это, следует прочитать руководство http://simplehtmldom.sourceforge.net/manual.htm, хотя в нем упоминаются только основные функции, гораздо больше под капотом