Отображать только определенный HTML с помощью PHP DOMDocument - PullRequest
0 голосов
/ 22 февраля 2011

Я хочу нарисовать HTML-страницу внутри моего сайта.

Примите этот сценарий:

У меня есть веб-сайт, который проверяет наличие отеля.Но вместо размещения изображений этого отеля на моем сервере.Я просто завиваюсь конкретной страницей на сайте отеля, которая содержит их изображения.

Могу ли я взять что-нибудь из html и отобразить на моем сайте?используя их HTML-код, но только те элементы или изображения, которые я хочу отобразить?

Я использую этот код, полученный из:

http://davidwalsh.name/download-urls-content-php-curl

Как показывает практика и аргументы, давайте попробуем отобразить логотип Google с их домашней страницы.

function get_data($url)
{
    $ch = curl_init();
    $timeout = 5;
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}

$returned_content = get_data('http://www.google.com');
echo '<base href="http://www.google.com/" />';
echo $returned_content;

Благодаря @alex я начал играть с DOMDocument в PHP-библиотеке.Тем не менее, я столкнулся с проблемой.

    function get_data($url)
{
    $ch = curl_init();
    $timeout = 5;
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}

$url = "www.abc.net.au";
$html = get_data($url);

$dom = new DOMDocument;
@$dom->loadHTML($html);
$logo = $dom->getElementById("abcLogo");
var_dump($logo);

Возвращает: object(DOMElement)[2]

Как мне разобрать это дальше?Или просто напечатайте / отобразите содержимое DIV с этим идентификатором ..?

Ответы [ 3 ]

2 голосов
/ 22 февраля 2011

Да, запустите полученный HTML-код через что-то вроде DOMDocument, чтобы извлечь нужные вам части.

1 голос
/ 22 февраля 2011

Как только вы нашли элемент DOM, может быть немного сложно получить HTML самого элемента (а не только его содержимое).

Вы можете получить значение XML одного элемента оченьлегко с DOMDocument::saveXML:

echo $dom->saveXML($logo);

Это может быть достаточно для вас.Я полагаю, что произойдет изменение, которое добавит эту функциональность и к saveHTML.

1 голос
/ 22 февраля 2011

echo $logo->nodeValue должно работать, потому что вы можете иметь только 1 элемент по идентификатору!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...