我非常接近放弃这个。从我所看到的,这应该很容易,但我尝试的任何东西都接近正确的结果。
我正在从网站上抓取标题,我想确保所有HTML实体都转换回正确的字符。
$html = file_get_contents('http://www.metacafe.com/watch/10859663/samsung_galaxy_products_rettingers_rants_technobuffalo/');
$doc = new DOMDocument();
@$doc->loadHTML($html);
$nodes = $doc->getElementsByTagName('title');
$urlTitle = $nodes->item(0)->nodeValue;
$urlTitle = html_entity_decode($urlTitle, ENT_QUOTES);
以上的输出是:
Samsung Galaxy Products - Rettinger's Rants - TechnoBuffalo - Video
上面的代码示例实际上只是我试图使其工作的一部分内容(包括在html_entity_decode上强制使用UTF-8字符集,这不应该是必需的,因为我使用PHP 5.4并且应该是默认的无论如何)。我已经看到了很多提示和提示,但它们似乎都没有什么区别。
如果任何人有一个新的例子,我会非常感激。
非常感谢
答案 0 :(得分:0)
答案 1 :(得分:0)
行。我觉得有点傻。
原来标题正在被正确解码,但在我的视图类的其他地方,输出再次使用htmlspecialchars进行转义......
但是,我认为至少分享完成的代码是正确的。我之前简化了它。这是使用Zend Framework的实际代码:
$html = $request->getBody();
$dom = new Zend_Dom_Query($html);
$urlTitle = $dom->query('title');
if ($urlTitle->count())
{
$urlTitle = $urlTitle->current()->nodeValue;
$urlTitle = html_entity_decode($urlTitle, ENT_QUOTES, 'UTF-8');
$urlTitle = htmlspecialchars_decode($urlTitle, ENT_QUOTES);
}
else
{
$urlTitle = '';
}
$urlDescription = $dom->query("meta[name='description']");
if ($urlDescription->count())
{
$urlDescription = $urlDescription->current()->getAttribute('content');
$urlDescription = html_entity_decode($urlDescription, ENT_QUOTES, 'UTF-8');
$urlDescription = htmlspecialchars_decode($urlDescription, ENT_QUOTES);
}
else
{
$urlDescription = '';
}
return array($urlTitle, $urlDescription);
我发现了一些需要解码的示例,上面的代码正确地完成了它们。上面的代码还包括正确的查询,以便从页面获取元描述。
感谢所有花时间发表评论和回答的人。