2012-02-28 5 views
-5

私のウェブサイトにURLの入力テキストがあります。このurlフィールドの値を掲示することにより、この特定のURLから可能なすべてのイメージ(存在する場合)を取得したいのですが、これはhttp://facebook.comの更新ステータスtextareaで行われます。だから、PHPのこれのコードは何ですか?phpのURLからすべての画像を取得しますか?

ありがとうございました。

+0

この明確かつ挑戦的な質問を捧げるための任意の理由は?私は誰もこの挑戦的な質問に答えるために優れているとは思わない。 – raj

+1

この投稿が投票された理由は、あなた自身でこれを試してみようとしたことさえ示していないということです。コードのいくつかの部分に特定の問題がある場合は、それを投稿しますが、コミュニティがコードの全セクションを手助けすることを期待してはいけません。まず、PHPのcUrlとregex関数を使うべきです。また、人々はあなたがコードを提供するように誰かに依頼するだけでなく、コミュニティ(評判)で自分自身を証明したときに、より喜んで助けてくれるかもしれません。 – MichaelH

+0

URLからhtmlを取得し、html/domパーサーを使用してください – scibuff

答えて

3

FacebookにはOpenGraphプロトコルがあります。あなたがFacebook上でリンクする多くのサイトは画像をレンダリングしません。これは、ogタグの設定がないためです。クロールされた画像の重要な結果を実際に達成するには、非常に大量のコードが必要になります。

スペーサーイメージ、トラッキングイメージなど、そのように使用されることは意図されていない多くのイメージがあります。サイトからすべてのイメージタグを取得すると、ほとんどデッドスペース。

いつものように、この問題には複数の方法があります。それらはすべて、URLのソースを取得することから始まります。これを達成するために私の好ましい方法はcURLです。

そこから、ソースの情報を解析して画像のソースを見つける必要があります。これはregular expressions (regex)で行うことができます。または、私の推奨する方法はPHPでDOMDocumentクラスを使用することです。次のように

のDOMDocumentクラスを使用して画像タグから元のURLを取得するアプローチする方法として、簡単な例は次のとおりです。

// Load your HTML result into $response prior to here. 
// Additionally, ensure that you have the root url for the 
//  page loaded into $base_url. 
$document = new DOMDocument(); 
$document->loadHTML($response); 

$images = array(); 

// For all found img tags 
foreach($document->getElementsByTagName('img') as $img) { 
    // Extract what we want 
    $image = array(
     // Here we take the img tag, get the src attribute 
     //  we then run it through a function to ensure that it is not a 
     //  relative url. 
     // The make_absolute() function will not be covered in this snippet. 
     'src' => make_absolute($img->getAttribute('src'), $base_url), 
    ); 

    // Skip images without src 
    if(! $image['src']) 
     continue; 

    // Add to collection. Use src as key to prevent duplicates. 
    $images[$image['src']] = $image; 
} 
関連する問題