这个女巫的视频我想获得 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] 我正在
ÐаÑÑило - ÐÑÑÑÐμÑÐμÑиÐμнай-Ð'обÑÐμ[HQ]
我也尝试用
curl_setopt( $ch, CURLOPT_ENCODING, "UTF-8" );
但它起作用了。
我尝试使用 html_entity_decode ,但无效
答案 0 :(得分:1)
如果文档本身不包含<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
标记,则会发生这种情况。
您可以尝试以下任一方法:
让DomDocument
直接从服务器加载HTML(即使用->loadHTMLFile()
)
在通过->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()
传递该编码。