1

file_get_contents を使用して、任意の URL から og:image を取得しています。

$fooURL = file_get_contents($URLVF['url']);


次に、property=og:image をフィルタリングして、ページから画像を取得します。以下のコードは、ほとんどの Web サイトで機能します。

preg_match("/content='(.*?)' property='og:image'/", $fooURL, $fooImage);


しかし、www.howcast.com のようなサイトには、以下のような og:image の異なるコードがあります。

<meta content='http://attachments-mothership-production.s3.amazonaws.com/images/main-avatar.jpeg' property='og:image'>


したがって、上記のコードの画像リンクを取得するには、 preg_match を次のようにする必要があります

preg_match('/property="og:image" content="(.*?)"/', $fooURL, $fooImage);


しかし、もちろん、上記のコードを使用した場合、動作する唯一のサイトは howcast であり、他のすべてのサイトは何も返しません

メタコードが記述されているあらゆる種類の方法、または画像リンクをスムーズに取得するための代替方法でコードを機能させる方法を教えてください

4

1 に答える 1

2

@str が示唆する DOMDocument と XPath の例:

$html = <<<LOD
<html><head>
<meta content='http://attachments-mothership-production.s3.amazonaws.com/images/main-avatar.jpeg' property='og:image'>
</head><body></body></html>
LOD;

$doc = new DOMDocument();
@$doc->loadHTML($html);
// or @$doc->loadHTMLFile($URLVF['url']);
$xpath = new DOMXPath($doc);
$metaContentAttributeNodes = $xpath->query("/html/head/meta[@property='og:image']/@content");
foreach($metaContentAttributeNodes as $metaContentAttributeNode) {
    echo $metaContentAttributeNode->nodeValue . "<br/>";
}
于 2013-07-20T23:19:24.357 に答える