通过PHP获取OGP

或许可以考虑使用下面提到的OGP库,会更好一些。

在Qiita上制作一个用于检查OGP的检查器

由于经常使用,所以做备忘录
curl示例

$title = '';

$ch = curl_init($url);// urlは対象のページ
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);// exec時に出力させない
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);// リダイレクト許可
curl_setopt($ch, CURLOPT_MAXREDIRS, 5);// 最大リダイレクト数
$html = curl_exec($ch);
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

// ここでhtmlのfalseチェックや空チェックやバイナリチェックやステータスコードチェック
// 空が来るとsimplexml_import_domでInvalid Nodetype to importのエラー

$dom_document = new \DOMDocument();
$from_encoding = mb_detect_encoding($html, ['ASCII', 'ISO-2022-JP', 'UTF-8', 'EUC-JP', 'SJIS'], true);
if ( ! $from_encoding)
{
    $from_encoding = 'SJIS';
}
@$dom_document->loadHTML(mb_convert_encoding($html, 'HTML-ENTITIES', $from_encoding));
$xml_object = simplexml_import_dom($dom_document);

$og_title_xpath = $xml_object->xpath('//meta[@property="og:title"]/@content');
$title_xpath = $xml_object->xpath('//title');

if ( ! empty($og_title_xpath))
{
    $title = (string)$og_title_xpath[0];
}

if ($title === '')
{
    $title = (string)$title_xpath[0];
}

使用PHP进行网络爬虫
PHP中安全可靠的编码检测方法

广告
将在 10 秒后关闭
bannerAds