PHP有一个简单的命令来获取网页的元标记(get_meta_tags),但这仅适用于具有名称属性的元标记。但是,开放图谱协议最近变得越来越流行。从网页获取opg值的最简单方法是什么。例如:
<meta property="og:url" content=""> <meta property="og:title" content=""> <meta property="og:description" content=""> <meta property="og:type" content="">
我看到的基本方法是通过cURL获取页面并使用正则表达式进行解析。任何的想法?
从HTML解析数据时,您实际上不应该使用正则表达式。看一下DOMXPath Query函数。
现在,实际代码可能是:
[编辑] Stefan Gehrig为XPath提供了更好的查询,因此代码可以简化为:
libxml_use_internal_errors(true); // Yeah if you are so worried about using @ with warnings $doc = new DomDocument(); $doc->loadHTML($html); $xpath = new DOMXPath($doc); $query = '//*/meta[starts-with(@property, \'og:\')]'; $metas = $xpath->query($query); $rmetas = array(); foreach ($metas as $meta) { $property = $meta->getAttribute('property'); $content = $meta->getAttribute('content'); $rmetas[$property] = $content; } var_dump($rmetas);
代替 :
$doc = new DomDocument(); @$doc->loadHTML($html); $xpath = new DOMXPath($doc); $query = '//*/meta'; $metas = $xpath->query($query); $rmetas = array(); foreach ($metas as $meta) { $property = $meta->getAttribute('property'); $content = $meta->getAttribute('content'); if(!empty($property) && preg_match('#^og:#', $property)) { $rmetas[$property] = $content; } } var_dump($rmetas);