使用php domdocument获取youtube视频的标题


Getting title of youtube videos using php domdocument

我有一个从HTML源获取标题的函数(我先旋转它,然后将源传递给这个):

function get_dom_page_title($source){
    $doc = new DOMDocument('1.0', 'utf-8');
    $doc->formatOutput = false;
    $doc->preserveWhiteSpace = false;
    $doc->strictErrorChecking = false; 
    @$doc->loadHTML('<?xml encoding="UTF-8">' . $source);
    $title = $doc->getElementsByTagName("title")->item(0)->nodeValue;
    if ($title !== ""){
        return (string)$title;
    }
    else{
        return false;
    }
}

然而,当我输入一个youtube链接http://www.youtube.com/watch?v=IFeE4q4-M0o时,返回的标题都很奇怪:‪Arsenal vs Benfica FT Highlights‬†- YouTube,或'n 'u202aArsenal vs Benfica FT Highlights'u202c'u200f'n - YouTube'n

如何排序?

使用PHP简单HTML DOM解析器

代码:

include("simple_html_dom.php");
$html = file_get_html('http://www.youtube.com/watch?v=IFeE4q4-M0o');
$title = $html->getElementsByTagName("title")->innertext;
echo preg_replace('/&#x([0-9a-f]+);/ei', 'chr(hexdec("$1"))', $title)

将输出*阿森纳vs梅多索斯FT集锦,‏——YouTube

PHP简单的HTML DOM解析器意味着更少的代码和一致的结果:)

您可以对DOMDocument做同样的事情

$doc = new DOMDocument();
$doc->loadHTML(file_get_contents('http://www.youtube.com/watch?v=IFeE4q4-M0o'));
$t = $doc->getElementsByTagName("title")->item(0)->nodeValue;
print_r($t);

与Simple相比,使用DOMDocument意味着更快的DOM处理。