Мне бы хотелось, чтобы содержимое (CSS, дочерние элементы и т. Д.) Отображалось на HTML-странице, но этот элемент находится на внешней странице. Когда я использую:
$page = new DOMDocument();
$page->loadHTMLFile('about.php');
$text = $page->getElementById('text');
echo $text->nodeValue;
Я только получаю текст, но #text
также есть изображение как ребенок и немного CSS. Могу ли я получить (и повторить) те, вроде как с помощью iframe, но затем с элементом. Если так, то как?
Большое спасибо.
Может быть, то, что вы ищете DOMDocument::saveHTML()
.
Если вы установите необязательные аргументы, он выводит только этот конкретный узел.
$elm = $page->getElementById('text');
echo $elm->ownerDocument->saveHTML($elm);
Я нашел решение, хотя оно не извлекает CSS, но если вам нужен только элемент и его дочерние элементы, это мой лучший выбор.
использование simple_html_dom.php делать все тяжелые вещи.
Моя внешняя страница:
<div id='text'>
<img src='img/dummy.png' align='left' alt='Image not available. Our apologies.'/>
<span>text</span><br/>
<p>
text
</p>
<p>
text
</p>
<p>
text
</p>
<div>
Теперь моя страница, на которой я хотел бы показать содержимое моей внешней страницы:
<?php include('../includes/simple_html_dom.php'); ?>
....
<?php
$html = file_get_html('about.php');
$ret = $html->find('div#text', 0);
echo $ret;
?>
что это делает, это увязывает элемент с его потомками, к сожалению, без CSS.