2013-07-20 3 views
1

Я использую file_get_contents для получения og: изображения с любого URL-адреса.Fetch og: image by file_get_contents и preg_match

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


И тогда я отфильтровывать свойство = OG: изображение, чтобы получить изображение на странице и этот код ниже работы с большинством веб-сайтов

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


Но сайты, как www.howcast .com имеют deffrent код OG: изображение, как показано ниже

<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); 


Но, конечно, если бы я использовал код выше теперь только сайт будет работать не почемучка и каждый сайт еще будет возвращать,

Любая идея как я могу сделать код работать с любым видом метода мета код написан или какой-либо альтернативный способ, чтобы получить ссылку на изображение плавно

+2

Используйте XPATH на DOMDocument. – str

+0

используйте то, что было объяснено, но вы можете сгруппировать свой шаблон, как этот '(pattern1 | pattern2)' –

+0

здесь также точный ответ: http://stackoverflow.com/questions/12014196/get-facebook-meta-tags-with-php –

ответ

2

пример с DOMDocument и XPath, как @str предполагает его:

$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/>"; 
}