2016-02-21 3 views
1

Я хотел бы получить содержимое (CSS, children, ect.) Для отображения на HTML-странице, но этот элемент находится на внешней странице. Когда я использую:Получить содержимое элемента с внешней страницы PHP

$page = new DOMDocument(); 
$page->loadHTMLFile('about.php'); 
$text = $page->getElementById('text'); 
echo $text->nodeValue; 

я получаю только текст, но #text также имеет образ как ребенок и некоторые CSS. Могу ли я получить (и эхо) те, к примеру, с iframe, но затем с элементом. Если да, то как?

Большое спасибо.

+0

Попробуйте использовать метод '.innerHTML()'. –

+0

Не могли бы вы объяснить это? –

+0

'getElementById ('text'). InnerHTML' [Объяснение здесь.] (Http://www.w3schools.com/jsref/prop_html_innerhtml.asp) –

ответ

1

Возможно, что-то, что вы ищете, это DOMDocument::saveHTML().

Если вы устанавливаете необязательные аргументы, он выводит только этот конкретный узел.

$elm = $page->getElementById('text'); 
echo $elm->ownerDocument->saveHTML($elm); 
+0

Это работает, но в одном ом дети '# text' содержат некоторые фанки-пунктуации (например, ï или é). При использовании вашего метода это копирует как какую-то странную комбинацию: Ã. Любой способ исправить это? Большое спасибо до сих пор. –

0

Я нашел решение, хотя оно не извлекает 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, к сожалению.