curl_exec和utf-8?

时间:2011-02-11 08:30:55

标签: php curl widget

嘿伙计们, 德国天气网站为网站所有者提供天气小工具。这个小部件适用于像äöü这样的德国Umlaute。但是这个小部件的设计很糟糕,所以我使用curl和xpath来查询这个天气小部件提供的信息。天气小部件是一组具有内联样式的表和div,我使用xpath来获取表td内的值。

除了像äöü这样的德国Umlaute,一切都很好。我的网站使用utf-8编码,因此所有这些Umlaute应该正常工作(并且它们在页面的其余部分进行)。即使我将天气小部件正常放置在我的网站上,小部件也可以与那些Umlaute一起使用。

然而,只要我使用curl获取表格中的值,Umlaute就不起作用并转换成奇怪的字符。

<?php
$url = 'http://www.weatherxyz.com/hptool/wordpress_v1.php?cid=43Xv1a0&l=de';

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, false);

$str = curl_exec($curl);

$dom = new DOMDocument;
$dom->loadHTML($str);
$xpath = new DOMXPath($dom);

$tds = $xpath->query('//div/table/tr/td');
foreach ($tds as $key => $cell) {
        echo $cell->textContent;
}
?>

你们有什么想法我能做到这一点吗?

2 个答案:

答案 0 :(得分:1)

Looks like you're not alone抱怨DOMDocument不理解不同的编码。特定海报包括SmartDOMDocument以撤消其实施不当的一些内容。

答案 1 :(得分:0)

检查页面编码,并相应地重新编码为utf8