0

这是来自女巫的视频,我想获得og:title

http://www.youtube.com/watch?feature=player_embedded&v=A683kmvRH_8

php代码

function file_get_contents_curl($url){
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_HEADER, 0);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
            $data = curl_exec($ch);
            curl_close($ch);
            return $data;
        }

        $html = file_get_contents_curl($pageurl);

        $doc = new DOMDocument();
        @$doc->loadHTML($html);
        $nodes = $doc->getElementsByTagName('title');

        $titleBackUp = $nodes->item(0)->nodeValue;

        $metas = $doc->getElementsByTagName('meta');

        for ($i = 0; $i < $metas->length; $i++){
            $meta = $metas->item($i);
            if($meta->getAttribute('name') == 'title')
                $title = $meta->getAttribute('content');
        }

标题是Мастило - В ръцете ти е най-добре [HQ]我得到

С°ÑÑило - ÑÑÑеÑе Ñи е най-добÑе [总部]

我也尝试

 curl_setopt( $ch, CURLOPT_ENCODING, "UTF-8" );

但它不起作用。

我尝试使用html_entity_decode但不工作

4

1 回答 1

2

如果文档本身不包含<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />标签,就会发生这种情况。

您可以尝试以下任一方法:

  1. 让我们DomDocument直接从服务器加载 HTML(即使用->loadHTMLFile()

  2. 在运行之前使用上述元标记为文档添加前缀->loadHTML()

例如,您可以这样做:

libxml_use_internal_errors(true);
$doc->loadHTML('<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />' . $html);
libxml_clear_errors();

让 libxml 知道它应该读取 utf-8 数据是一种技巧……不可能通过->loadHTML().

于 2012-06-01T15:20:15.203 回答