2015-02-20 1 views
0

Там есть внешний сайт http://example.com/phprender.phpКак восстановить элементы html, возвращенные внешним сайтом php?

который возвращает следующие HTML элементы

<div id="phprender"> 
    <p id='101'>ABC</p> 
    <p id='102'>Hello World!</p> 
</div> 

Как получить данные «ABC», так что я могу использовать эти данные для отображения на моем сайте?

+3

Используйте 'file_get_contents' для загрузки HTML, и' DOMDocument' разобрать его. – Barmar

+0

, если его законность для очистки содержимого с этого конкретного сайта, то вы должны изучить HTML-парсеров в PHP, DOMDocument, в частности – Ghost

ответ

1

Использование DomDocument для разбора HTML, и DOMXPath получить:

$url="http://example.com/phprender.php"; 
    $doc = new DOMDocument(); 
    $content=file_get_contents($url); 
    $doc->loadHTML($content); 
    $xpath = new DOMXpath($doc); 

    $elements=$xpath->query("//p[@id='101']"); 
    if (!is_null($elements)) 
    foreach ($elements as $ele) { 
     echo $ele->nodeValue; 
    } 
0

file_get_contents

<?php 
$html = file_get_contents('http://example.com/phprender.php'); 
echo $html; 
?> 


Для клиента способом
Is there a JavaScript way to do file_get_contents()?

+0

, сайт, на котором я хочу получить данные для отображения на сайте, не поддерживает php – joke4me

+0

http: // stackoverflow .com/questions/10693518/is-there-a-javascript-way-to-do-file-get-contents –

0

, если вы хотите использовать подход яваскрипта, убедитесь, что внешний сайт у CORS отключены. Вы можете прочитать here. Затем используйте jquery для его загрузки:

$("#content").load("services.html #IdOfelementToLoad"); 

вы можете использовать # 101 в вашем случае.

+0

У меня нет доступа к внешнему сайту. – joke4me

+0

, тогда вы можете использовать php-подход. Попробуйте http://davidwalsh.name/curl-download , затем substr $ return_content, чтобы получить только то, что вам нужно. –

0

PHP Решение

Вы можете использовать file_get_contents и выполнить соответствие регулярного выражения, как это:

preg_match('/<p.*>(.*)<\/p>/i',file_get_contents('http://example.com/phprender.php'), $matches); 
print_r($matches[1]); 

JQuery Решение

С JQuery вы можете использовать получить для получения удаленного HTML например:

$.get("http://example.com/phprender.php", function(data) { 
    $(".result").html(data); 
    var myMatch = data.match(/<p.*>(.*)<\/p>/i); 
}); 

или с использованием DOM вместо соответствия.