2012-01-21 26 views
0

PHPを使用して別の(ローカル)ページからいくつかのHTMLを取得するにはどうすればよいですか?PHPを使用して別のページのテキストを取得する

"Product1.htm"というページがあり、 "price"というクラスのdivのテキストを見つけて別のページに表示する: "Products_overview.htm"。 Products_overview.htmの中には、product1.htmをターゲットとし、 "Price" DIVの内容を表示するPHPがあります。

私はそれが恥ずかしがられるほど単純でなければならないと確信していますが、これを行う方法はありません!どんな助け?

+0

あなたがあなたの代わりにPHPのJavaScriptを使用して喜んでいる場合はSOスレッドこれをチェックアウトすることもできますhttp://stackoverflow.com/questions/405409/use-jquery-selectors-on-ajax-loaded-html –

答えて

1

簡単な方法:simple HTML Dom使用:

例:

Page.html

Some html... 

<div class="price"> 
Vivamus malesuada hendrerit metus, eu viverra odio viverra nec. Maecenas nec felis est, sit amet molestie massa. Morbi odio dolor, scelerisque eget bibendum et, volutpat non risus. Curabitur eleifend, lacus non rutrum sollicitudin, est diam fermentum nisl, vel lacinia felis felis quis odio. Aliquam mollis, est nec porttitor feugiat, velit risus dapibus dolor, ac viverra tortor 
</div> 

Some html... 

PHPファイル:(@のcegfaultの答えあたりなど)

<?php 
include 'simple_html_dom.php'; 
$html = file_get_html('page.html'); 

echo $html->find("div[class=price]", 0); // will echo content inside a <div class="price"> </div> 
?> 
+0

すばらしく簡単です。それが存在していたことを知らなかった!大変感謝! –

+0

うわー!私はfile_get_htmlの使用については考えなかった。私はちょうど私がfile_get_contentsでfind(非メンバ)を使うことができないことを知っていました。これにより、カールよりも簡単に、きれいになります。 – Fr0zenFyr

0

file_get_contents('http://..../Product1.html')またはcURLのいずれかを使用し、通常のテキストとして解析することができます。

1

厳密に言えば、divの "price"のコンテンツがどのように生成されているかを把握し、Products_overview.htmにそのコンテンツを再現するのが最もよい方法です。これを実行する方法はありません場合は、CURLを使用することができます。

div要素が出力される前に、PHPは、.htmファイルを解析する必要があると仮定:

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "http://localhost/path/to/Product1.htm"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
$content = curl_exec($ch); 
if(preg_match('/<div class=\'Price\'>(.*?)<\/div>/is', $content, $matches) { 
    echo $matches[1]; 
} 
+0

divの「内容」の内容は、私が手で入力しました!このアイデアは、ここでの変更が価格を表示する他のページに反映されることです。 cURLは有望そうに見えましたが、シンプルなHTML DOMソリューションのシンプルさに惹かれました。私はさらにあなたを見ていきます!ありがとう –

0

cURLを使用。しかし、テキスト自体を取得するには、DOMDocumentのようなHTMLパーサを使用します。

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "http://localhost/path/to/Product1.htm"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
$content = curl_exec($ch); 
$doc = new DOMDocument(); 
$doc->loadHTML($content); 
$finder = new DomXPath($doc); 
$classname="price"; 
$nodes = $finder->query("//div[contains(@class, '$classname')]"); 
関連する問題